<?xml version="1.0"?>
<doc>
    <assembly>
        <name>ESRI.ArcGIS.Client.Toolkit.DataSources</name>
    </assembly>
    <members>
        <member name="T:ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer">
            <summary>
            A <see cref="T:ESRI.ArcGIS.Client.Geometry.MapPoint">MapPoint</see> type of custom 
            <see cref="T:ESRI.ArcGIS.Client.GraphicsLayer">GraphicsLayer</see> based on the 
            <a href="http://office.microsoft.com/en-us/excel-help/import-or-export-text-txt-or-csv-files-HP010099725.aspx" target="_blank">Comma Separated Value</a> 
            (CSV) file format.
            </summary>
            <remarks>
            <para>
            The CSV file format is tabular data in plain text. The data in the CSV file consists of fields of data separated by 
            a delimiting character (typically a comma) for a record. The first record in the CSV file is known as the header and 
            defines the names of each field of the tabular data. The second through last row of records in the CSV file is the 
            actual tabular data. When the delimiter (typically a comma) is embedded in the tabular data for a particular field, 
            that value should be encased in quotes to avoid parsing errors. Each record in the CSV file should contain the same 
            number of fields. Numerous applications including the Microsoft Excel Office product can export and import CSV files. 
            It is not required that a CSV source file contain the extension .csv; the file can contain any extension (ex: .txt) 
            or none at all.
            </para>
            <para>
            In order to make use of CSV files in the 
            ArcGIS API for Silverlight
            
            
             there should be point based spatial locational coordinate information for each record. This spatial information 
             defines the <see cref="T:ESRI.ArcGIS.Client.Geometry.MapPoint">MapPoint</see> that will be used to construct a 
             custom <see cref="T:ESRI.ArcGIS.Client.GraphicsLayer">GraphicsLayer</see>. Other geography types like Polyline or 
             Polygon are not supported for constructing a CsvLayer. Unless specified otherwise in the 
             <see cref="P:ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer.SourceSpatialReference">SourceSpatialReference</see> 
             Property, it is assumed that the <see cref="T:ESRI.ArcGIS.Client.Geometry.SpatialReference">SpatialReference</see> 
             of the CsvLayer has a WKID value of 4326. During the parsing process of reading the header record of the CSV file 
             to construct the CsvLayer, any of the following names can be used to automatically detect the spatial location 
             coordinate information:
            </para>
            <list type="table">
              <listheader><term>Coordinate Type</term><description>Automatically detected Field names</description></listheader>
              <item><term>LATITUDE</term><description>"lat", "latitude", "y", "ycenter", "latitude83", "latdecdeg", "point-y"</description></item>
              <item><term>LONGITUDE</term><description>"lon", "lng", "long", "longitude", "x", "xcenter", "longitude83", "longdecdeg", "point-x"</description></item>
            </list>
            <para>
            NOTE: The CsvLayer parsing algorithm for the Field names listed in the table above is case insensitive.
            </para>
            <para>
            If the above spatial location coordinate field names are not specified in the header record, then it will be required 
            to specify them explicitly. Use the <see cref="P:ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer.XFieldName">XFieldName</see> 
            Property to explicitly specify the Longitude coordinate and the 
            <see cref="P:ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer.YFieldName">YFieldName</see> Property to explicitly specify 
            the Latitude coordinate.
            </para>
            <para>
            By default it is assumed that the delimiter for the CSV file in parsing data values for between fields is the comma 
            (,). If another delimiter is used (for example a tab or dash) it is required to specify the 
            <see cref="P:ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer.ColumnDelimiter">ColumnDelimiter</see> Property. If the 
            comma is used as the delimiter in the CSV file the ColumnDelimiter Property does not need to be set.
            </para>
            <para>
            If it is not desired to convert all of the fields of information in the CSV records into a CsvLayer use the 
            <see cref="P:ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer.SourceFields">SourceFields</see> Property to set exactly 
            which fields will become attributes in the CsvLayer. If the SourceFields Property is not specified then all fields 
            of information in the CSV file will be used to populate the attributes in the CsvLayer. To restrict which fields 
            are generated in the CsvLayer using the SourceFields Property, create a new 
            <see cref="T:ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer.FieldCollection">CsvLayer.FieldCollection</see> object 
            and add the specific <see cref="T:ESRI.ArcGIS.Client.Field">Field</see> objects with the minimum Properties of 
            <see cref="P:ESRI.ArcGIS.Client.Field.FieldName">Field.FieldName</see> and 
            <see cref="P:ESRI.ArcGIS.Client.Field.Type">Field.Type</see> being set. The Field.FieldName should match the header 
            name contained inside the CSV file. If Field.Type is not provided field type will default to string.
            </para>
            <para>
            If it is desired to obtain the CSV data from a 
            <a href="http://msdn.microsoft.com/en-us/library/system.io.stream(v=vs.100).aspx" target="_blank">Stream</a> rather 
            than a Url use the <see cref="M:ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer.SetSource(System.IO.Stream)">SetSource</see> Method.
            </para>
            <para>
            Because the CsvLayer inherits all of the GraphicsLayer functionality (which also inherits from Layer), this means 
            that all of the things you can do a GraphicsLayer can also be done on a CsvLayer. For example 
            you can set up a <b>GraphicsLayer.MapTip</b> to display popup information when the mouse is hovered over a particular MapPoint Graphic;
            
            you can <see cref="M:ESRI.ArcGIS.Client.Graphic.Select">select</see> a particular Graphic in the CsvLayer; 
            or you can even define when particular Graphic displays in the Map based upon a 
            <see cref="P:ESRI.ArcGIS.Client.Layer.VisibleTimeExtent">VisibleTimeExtent</see>. The possibilities are only limited 
            to your ideas and programming experience.
            </para>
            <para>Although ArcGIS Server is not required to host a CSV file web service you may experience the similar hosting issues of accessing the web service as described in the ArcGIS Resource Center blog entitled <a href="http://blogs.esri.com/esri/arcgis/2009/08/24/troubleshooting-blank-layers/" target="_blank">Troubleshooting blank layers</a>. Specifically, you may need to make sure that a correct <a href="http://msdn.microsoft.com/EN-US/LIBRARY/CC197955(VS.95).ASPX" target="_blank">cilentaccesspolicy.xml or crossdomain.xml</a> file is in place on the web servers root. If a clientaccesspolicy.xml or crossdomainpolicy.xml file cannot be used on your web server for situations like <a href="http://resources.arcgis.com/en/help/silverlight-api/concepts/index.html#/Secure_services/016600000022000000/" target="_blank">secure services</a> you may need to use a <a href="http://resources.arcgis.com/en/help/silverlight-api/concepts/0166/other/SLProxyPage.zip">proxy page</a> on your web server and make use of the <b>CsvLayer.ProxyUrl</b> Property.</para>
            <para>
            The bare minimum settings that need to be specified to create and display a CsvLayer in a Map are the 
            <see cref="P:ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer.Url">Url</see> and 
            <see cref="P:ESRI.ArcGIS.Client.GraphicsLayer.Renderer">Renderer</see> Properties (Url methadology) OR the 
            <see cref="M:ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer.SetSource(System.IO.Stream)">SetSource</see> and 
            <see cref="P:ESRI.ArcGIS.Client.GraphicsLayer.Renderer">Renderer</see> Properties (Stream methodology). 
            NOTE: This assumes that default spatial coordinate information field names are used and the delimiter for the 
            CSV file is a comma.
            </para>
            <para>
            There are several methods to construct a Url for accessing data in a CSV layer. The example code in the 
            <b>CsvLayer</b> Class documentation shows how to access 
            a CSV file via on a web server and uses the 'http://' keyword to construct a Url. The example code in the 
            <see cref="P:ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer.Url">CsvLayer.Url</see> Property documentation shows 
            how to access a CSV file as a resource on the local disk in a Visual Studio project using the 
            '[Visual_Studio_Project_Name]' and the 'component' keywords. Even more options are available such as constructing 
            a Url using the 'file://' or 'pack://' keywords. The development platform you are coding in will determine which 
            style of Url is appropriate. See the documentation for your particular development platform to decide which type 
            of string can be used in the the Url construction.
            </para>
            </remarks>
            <example>
            <para>
            <b>How to use:</b>
            </para>
            <para>
            When the application loads a CsvLayer will automatically be added to the Map (it was specified in XAML). 
            Click the Button to add another CsvLayer to the Map (it will be added via code-behind). The ID of each 
            layer will displayed in the TextBox. 
            </para>
            <para>
            The XAML code in this example is used in conjunction with the code-behind (C# or VB.NET) to demonstrate
            the functionality.
            </para>
            <para>
            The following is an example of the ASCII contents for the file named US_Cities_Top_5.csv:<br/>
            ID,Lat,Long,CityName,Population<br/>
            1,40.714,-74.006,New York City,8244910<br/>
            2,34.0522,-118.244,Los Angeles,3819702<br/>
            3,41.878,-87.636,Chicago,2708120<br/>
            4,29.763,-95.363,Houston,2099451<br/>
            5,39.952,-75.168,Philadelphia,1526006<br/>
            </para>
            <para>
            The following is an example of the ASCII contents for the file named US_Cities_6_to_10.csv:<br/>
            ID,Lat,Long,CityName,Population<br/>
            6,29.423,-98.493,San Antonio,1327407<br/>
            7,32.715,-117.156,San Diego,1326179<br/>
            8,32.782,-96.815,Dallas,1223229<br/>
            9,37.228,-119.228,San Jose,945942<br/>
            10,30.331,-81.655,Jacksonville,821784<br/>
            </para>
            <para>
            The following screen shot corresponds to the code example in this page.
            </para>
            <para>
            <img border="0" alt="Adding a CsvLayer in XAML and code-behind." src="C:\ArcGIS\dotNET\API SDK\Main\ArcGISSilverlightSDK\LibraryReference\images\Client.ToolkitDataSources.CsvLayer.png"/>
            </para>
            <code title="Example XAML1" description="" lang="XAML">
            &lt;Grid x:Name="LayoutRoot" &gt;
              
              &lt;!-- Add local Resources to define a SimpleRender to display Red circles as a SimpleMarkerSymbol 
              for the CsvLayer. --&gt;
              &lt;Grid.Resources&gt;
                &lt;esri:SimpleRenderer x:Key="myRenderer"&gt;
                  &lt;esri:SimpleRenderer.Symbol&gt;
                    &lt;esri:SimpleMarkerSymbol Color="Red" Size="12" Style="Circle" /&gt;
                  &lt;/esri:SimpleRenderer.Symbol&gt;
                &lt;/esri:SimpleRenderer&gt;
              &lt;/Grid.Resources&gt;
              
              &lt;!-- Add a Map Control to the application. Set the Extent to North America. --&gt;
              &lt;esri:Map x:Name="Map1" HorizontalAlignment="Left" VerticalAlignment="Top" 
                    Margin="0,238,0,0" Height="350" Width="415" Extent="-15219969,2609636,-6232883,6485365"&gt;
              
                &lt;!-- Add a backdrop ArcGISTiledMapServiceLayer. --&gt;
                &lt;esri:ArcGISTiledMapServiceLayer  ID="World_Topo_Map" 
                      Url="http://services.arcgisonline.com/arcgis/rest/services/world_topo_map/MapServer" /&gt;
                
                &lt;!-- Add a CsvLayer. The renderer symbology will be based upon the local static resource defined above.
                NOTE: you need to adjust the Url to a .csv file served up on your test web server. --&gt;
                &lt;esri:CsvLayer ID="US_Cities_Top_5" Url="http://www.yourserver.com/CSV_Files/US_Cities_Top_5.csv"
                      Renderer="{StaticResource myRenderer}" Initialized="CsvLayer_Initialized"/&gt;
              &lt;/esri:Map&gt;
              
              &lt;!-- Add a Button that will allow the user to add another CsvLayer via code-behind. --&gt;
              &lt;Button Name="Button1" Height="23" HorizontalAlignment="Left" Margin="0,209,0,0"  VerticalAlignment="Top" 
                      Width="706" Content="Add another CsvLayer (via code-behind) for the specified Url."
                      Click="Button1_Click" /&gt;
              
              &lt;!-- TextBox to display information about about the CsvLayerLayers added to the Map. --&gt;
              &lt;TextBox Height="350" HorizontalAlignment="Left" Margin="421,238,0,0" Name="TextBox1" VerticalAlignment="Top" 
                       Width="285" /&gt;
              
              &lt;!-- Provide the instructions on how to use the sample code. --&gt;
              &lt;TextBlock Height="174" HorizontalAlignment="Left" Name="TextBlock1" VerticalAlignment="Top" Width="788" 
                         TextWrapping="Wrap" Text="When the application loads a CsvLayer will automatically be added 
                         to the Map (it was specified in XAML). Click the Button to add another CsvLayer to the Map 
                         (it will be added via code-behind). The ID of each layer will displayed in the TextBox." /&gt;
            &lt;/Grid&gt;
            </code>
            <code title="Example CS1" description="" lang="CS">
            private void CsvLayer_Initialized(object sender, System.EventArgs e)
            {
              // This function will execute as a result of the CsvLayer that was defined in XAML being Initialized.
              
              // Get the CsvLayer.
              ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer myCsvLayer = (ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer)sender;
              
              // Get the ID of the CsvLayer.
              string myID = myCsvLayer.ID;
              
              // Create a StringBuilder object to hold information about the CsvLayer and add some useful information to it.
              System.Text.StringBuilder myStringBuilder = new System.Text.StringBuilder();
              myStringBuilder.Append("The 1st CsvLayer was" + Environment.NewLine);
              myStringBuilder.Append("added via XAML and it's ID is: " + Environment.NewLine);
              myStringBuilder.Append(myID);
              
              // Display the results of the StringBuilder text to the user.
              TextBox1.Text = myStringBuilder.ToString();
            }
            
            private void Button1_Click(object sender, System.Windows.RoutedEventArgs e)
            {
              // This function executes as a result of the user clicking the Button. It adds a CsvLayer using code-behind.
              
              // Create a CsvLayer. 
              ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer myCsvLayer2 = new ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer();
              
              // Set the Url of the CsvLayer to a public service. 
              // NOTE: you need to adjust the Url to a .csv file served up on your test web server.
              myCsvLayer2.Url = "http://www.yourserver.com/CSV_Files/US_Cities_6_to_10.csv";
              
              // Set the ID of the CsvLayer.
              myCsvLayer2.ID = "US_Cities_6_to_10";
              
              // Create a SimpleMarkerSymbol (a green circle) for the CsvLayer that will be added.
              ESRI.ArcGIS.Client.Symbols.SimpleMarkerSymbol theSimpleMarkerSymbol = new ESRI.ArcGIS.Client.Symbols.SimpleMarkerSymbol();
              theSimpleMarkerSymbol.Color = new System.Windows.Media.SolidColorBrush(System.Windows.Media.Colors.Green);
              theSimpleMarkerSymbol.Size = 12;
              theSimpleMarkerSymbol.Style = ESRI.ArcGIS.Client.Symbols.SimpleMarkerSymbol.SimpleMarkerStyle.Circle;
              
              // Define a SimpleRenderer and set the Symbol to the SimpleMarkerSymbol.
              ESRI.ArcGIS.Client.SimpleRenderer theSimpleRenderer = new ESRI.ArcGIS.Client.SimpleRenderer();
              theSimpleRenderer.Symbol = theSimpleMarkerSymbol;
              
              // Define the Renderer for the CsvLayer.
              myCsvLayer2.Renderer = theSimpleRenderer;
              
              // Wire-up the Initialized Event of the CsvLayer. Note how a different Initilized Event is being used verses 
              // the one defined in XAML. They could share the same Initialized Event but we created two seperate ones 
              // for demonstration purposes.
              myCsvLayer2.Initialized += CsvLayer_Initialized2;
              
              // Add the CsvLayer to the Map.
              Map1.Layers.Add(myCsvLayer2);
            }
            
            private void CsvLayer_Initialized2(object sender, EventArgs e)
            {
              // This function will execute as a result of the CsvLayer that was defined in code-behind being Initialized.
              
              // Get the CsvLayer.
              ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer myCsvLayer2 = (ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer)sender;
              
              // Get the ID of the CsvLayer.
              string myID2 = myCsvLayer2.ID;
              
              // Create a StringBuilder object to hold information about the CsvLayer and add some useful information to it.
              System.Text.StringBuilder myStringBuilder = new System.Text.StringBuilder();
              myStringBuilder.Append(TextBox1.Text + Environment.NewLine);
              myStringBuilder.Append(Environment.NewLine);
              myStringBuilder.Append("The 2nd CsvLayer was" + Environment.NewLine);
              myStringBuilder.Append("added via code-behind and it's ID is: " + Environment.NewLine);
              myStringBuilder.Append(myID2);
              
              // Display the results of the StringBuilder text to the user.
              TextBox1.Text = myStringBuilder.ToString();
            }
            </code>
            <code title="Example VB1" description="" lang="VB.NET">
            Private Sub CsvLayer_Initialized(sender As System.Object, e As System.EventArgs)
              
              ' This function will execute as a result of the CsvLayer that was defined in XAML being Initialized.
              
              ' Get the CsvLayer.
              Dim myCsvLayer As ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer = CType(sender, ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer)
              
              ' Get the ID of the CsvLayer.
              Dim myID As String = myCsvLayer.ID
              
              ' Create a StringBuilder object to hold information about the CsvLayer and add some useful information to it.
              Dim myStringBuilder As New Text.StringBuilder
              myStringBuilder.Append("The 1st CsvLayer was" + vbCrLf)
              myStringBuilder.Append("added via XAML and it's ID is: " + vbCrLf)
              myStringBuilder.Append(myID)
              
              ' Display the results of the StringBuilder text to the user.
              TextBox1.Text = myStringBuilder.ToString
              
            End Sub
            
            Private Sub Button1_Click(sender As System.Object, e As System.Windows.RoutedEventArgs)
              
              ' This function executes as a result of the user clicking the Button. It adds a CsvLayer using code-behind.
              
              ' Create a CsvLayer. 
              Dim myCsvLayer2 As ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer = New ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer
              
              ' Set the Url of the CsvLayer to a public service. 
              ' NOTE: you need to adjust the Url to a .csv file served up on your test web server.
              myCsvLayer2.Url = "http://www.yourserver.com/CSV_Files/US_Cities_6_to_10.csv"
              
              ' Set the ID of the CsvLayer.
              myCsvLayer2.ID = "US_Cities_6_to_10"
              
              ' Create a SimpleMarkerSymbol (a green circle) for the CsvLayer that will be added.
              Dim theSimpleMarkerSymbol As ESRI.ArcGIS.Client.Symbols.SimpleMarkerSymbol = New ESRI.ArcGIS.Client.Symbols.SimpleMarkerSymbol
              theSimpleMarkerSymbol.Color = New System.Windows.Media.SolidColorBrush(System.Windows.Media.Colors.Green)
              theSimpleMarkerSymbol.Size = 12
              theSimpleMarkerSymbol.Style = ESRI.ArcGIS.Client.Symbols.SimpleMarkerSymbol.SimpleMarkerStyle.Circle
              
              ' Define a SimpleRenderer and set the Symbol to the SimpleMarkerSymbol.
              Dim theSimpleRenderer As ESRI.ArcGIS.Client.SimpleRenderer = New ESRI.ArcGIS.Client.SimpleRenderer
              theSimpleRenderer.Symbol = theSimpleMarkerSymbol
              
              ' Define the Renderer for the CsvLayer.
              myCsvLayer2.Renderer = theSimpleRenderer
              
              ' Wire-up the Initialized Event of the CsvLayer. Note how a different Initilized Event is being used verses 
              ' the one defined in XAML. They could share the same Initialized Event but we created two seperate ones 
              ' for demonstration purposes.
              AddHandler myCsvLayer2.Initialized, AddressOf CsvLayer_Initialized2
              
              ' Add the CsvLayer to the Map.
              Map1.Layers.Add(myCsvLayer2)
              
            End Sub
            
            Private Sub CsvLayer_Initialized2(sender As Object, e As EventArgs)
              
              ' This function will execute as a result of the CsvLayer that was defined in code-behind being Initialized.
              
              ' Get the CsvLayer.
              Dim myCsvLayer2 As ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer = CType(sender, ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer)
              
              ' Get the ID of the CsvLayer.
              Dim myID2 As String = myCsvLayer2.ID
              
              ' Create a StringBuilder object to hold information about the CsvLayer and add some useful information to it.
              Dim myStringBuilder As New Text.StringBuilder
              myStringBuilder.Append(TextBox1.Text + vbCrLf)
              myStringBuilder.Append(vbCrLf)
              myStringBuilder.Append("The 2nd CsvLayer was" + vbCrLf)
              myStringBuilder.Append("added via code-behind and it's ID is: " + vbCrLf)
              myStringBuilder.Append(myID2)
              
              ' Display the results of the StringBuilder text to the user.
              TextBox1.Text = myStringBuilder.ToString
              
            End Sub
            </code>
            </example>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer.#ctor">
            <summary>
            Initalizes and instance of <see cref="T:ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer"/>.
            </summary>
        </member>
        <member name="F:ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer.SourceFieldsProperty">
            <summary>
            Identifies the <see cref="P:ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer.SourceFields"/> dependency property.
            </summary>
        </member>
        <member name="F:ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer.XFieldNameProperty">
            <summary>
            Identifies the <see cref="P:ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer.XFieldName"/> dependency property.
            </summary>
        </member>
        <member name="F:ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer.YFieldNameProperty">
            <summary>
            Identifies the <see cref="P:ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer.YFieldName"/> dependency property.
            </summary>
        </member>
        <member name="F:ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer.ColumnDelimiterProperty">
            <summary>
            Identifies the <see cref="P:ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer.ColumnDelimiter"/> dependency property.
            </summary>
        </member>
        <member name="F:ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer.UrlProperty">
            <summary>
            Identifies the <see cref="P:ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer.Url"/> dependency property.
            </summary>
        </member>
        <member name="F:ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer.SourceSpatialReferenceProperty">
            <summary>
            Identifies the <see cref="P:ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer.SourceSpatialReference"/> dependency property. The default value is WKID (4326).
            </summary>
        </member>
        <member name="F:ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer.ProxyUrlProperty">
            <summary>
            Identifies the <see cref="P:ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer.ProxyUrl"/> dependency property.
            </summary>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer.Reset">
            <summary>
            Clears the graphics and reloads the CSV data.
            </summary>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer.GetGraphics(System.Action{ESRI.ArcGIS.Client.GraphicCollection})">
            <summary>
            This will start the process to find the CSV data, process the data, and convert into graphics.
            </summary>
            <param name="onCompleted">The callback handler that will return a collection of graphics for the layer.</param>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer.CreateGraphics(System.Collections.Generic.List{System.String[]},System.Action{ESRI.ArcGIS.Client.GraphicCollection})">
            <summary>
            Creates a GraphicCollection from a list of string array containing rows of CSV data.
            </summary>
            <param name="csvData">list of string array containing multiple rows of CSV data.</param>
            <param name="onCompleted">Callback that will return the GraphicCollection after all the CSV data is parsed into Graphic objects</param>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer.CsvParser(System.Action{System.Collections.Generic.List{System.String[]}})">
            <summary>
            This will attempt to download or retrieve the CSV file from various locations based on what the platform supports. The if CSV data
            is found it will be read and returned as a list of string array.
            </summary>
            <param name="callback">Calback that will return list of string array containing parsed CSV data</param>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer.ConvertToExpectedType(System.Object,ESRI.ArcGIS.Client.Field.FieldType)">
            <summary>
            Attempts to convert and object into a exact data type based on FieldType metadata.
            </summary>
            <param name="valueObject">object value to try and convert into a specific type</param>
            <param name="expectedValueType">type that the value object will try to be converted to.</param>
            <returns>The converted value as an object</returns>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer.GetCsvNumericCulture(System.Collections.Generic.List{System.String[]})">
            <summary>
            Samples the X and Y field to check the decimal character to determine numeric culture of to use for parsing numeric numbers.
            There is an assumption that all numeric columns will have the same culture.
            </summary>
            <param name="csvData">Csv data</param>        
            <returns></returns>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer.SetStream(System.IO.Stream,System.Action{System.Collections.Generic.List{System.String[]}})">
            <summary>
            This will parse the Stream of CSV data and return a list of string arrays containing the parsed CSV data.
            </summary>
            <param name="stream">Stream of CSV data</param>
            <param name="callback">Callback that will return a list of string arrays of the parsed CSV data from the stream.</param>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer.SetSource(System.IO.Stream)">
            <summary>
            Set stream is used to add graphics to the layer from a stream that contains CSV data.
            </summary>
            <param name="stream">Stream containing CSV data</param>
            <remarks>
            <para>
            Using the <b>SetSource</b> Method is an alternate way to create A CsvLayer using a 
            <a href="http://msdn.microsoft.com/en-us/library/system.io.stream(v=vs.100).aspx" target="_blank">Stream</a> 
            to get the data from a CSV file rather than using the 
            <see cref="P:ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer.Url">Url</see> Property. 
            </para>
            <para>
            The CSV file format is tabular data in plain text. The data in the CSV file consists of fields of data separated 
            by a delimiting character (typically a comma) for a record. The first record in the CSV file is known as the 
            header and defines the names of each field of the tabular data. The second through last row of records in the 
            CSV file is the actual tabular data. When the delimiter (typically a comma) is embedded in the tabular data 
            for a particular field, that value should be encased in quotes to avoid parsing errors. Each record in the 
            CSV file should contain the same number of fields. Numerous applications including the Microsoft Excel Office 
            product can export and import CSV files. It is not required that a CSV source file contain the extension .csv; 
            the file can contain any extension (ex: .txt) or none at all.
            </para>
            <para>Although ArcGIS Server is not required to host a CSV file web service you may experience the similar hosting issues of accessing the web service as described in the ArcGIS Resource Center blog entitled <a href="http://blogs.esri.com/esri/arcgis/2009/08/24/troubleshooting-blank-layers/">Troubleshooting blank layers</a>. Specifically, you may need to make sure that a correct <a href="http://msdn.microsoft.com/EN-US/LIBRARY/CC197955(VS.95).ASPX" target="_blank">cilentaccesspolicy.xml or crossdomain.xml</a> file is in place on the web servers root. If a clientaccesspolicy.xml or crossdomainpolicy.xml file cannot be used on your web server for situations like <a href="http://resources.arcgis.com/en/help/silverlight-api/concepts/index.html#/Secure_services/016600000022000000/">secure services</a> you may need to use a <a href="http://resources.arcgis.com/en/help/silverlight-api/concepts/0166/other/SLProxyPage.zip">proxy page</a> on your web server and make use of the <b>CsvLayer.ProxyUrl</b> Property.</para>
            <para>
            The bare minimum settings that need to be specified to create and display a CsvLayer in a Map are the 
            <see cref="P:ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer.Url">Url</see> and 
            <see cref="P:ESRI.ArcGIS.Client.GraphicsLayer.Renderer">Renderer</see> Properties (Url methadology) OR 
            the <b>SetSource</b> and 
            <see cref="P:ESRI.ArcGIS.Client.GraphicsLayer.Renderer">Renderer</see> Properties (Stream methodology). 
            NOTE: This assumes that default spatial coordinate information field names are used and the delimiter for 
            the CSV file is a comma.
            </para>
            </remarks>
            <example>
            <para>
            <b>How to use:</b>
            </para>
            <para>
            Click the Button to add a CsvLayer to the Map. The CsvLayer will be created using a local Resouce in the 
            Visual Studio project. The CsvLayer.SetSource Method is used to get the local Resource as a Stream.
            </para>
            <para>
            SPECIAL INSTRUCTIONS: The name of the sample Visual Studio project in this code example is "TestProject".
            Additionally a folder named "myFolder" was added to "TestProject". Place the "US_Cities_Top_5.csv" file in
            the "myFolder" location. Make sure that the for the Properties of the "US_Cities_Top_5.csv" file that the
            'Build Action' is set to 'Resource'.
            </para>
            <para>
            <img border="0" alt="Adding the US_Cities_Top_5.csv file as a Resource to the Visual Studio Proect named 'TestProject' in the 'myFolder' location." src="C:\ArcGIS\dotNET\API SDK\Main\ArcGISSilverlightSDK\LibraryReference\images\Client.ToolkitDataSources.CsvLayer.SetSource1.png"/>
            </para>
            <para>
            The following is an example of the ASCII contents for the file named US_Cities_Top_5.csv:<br/>
            ID,Lat,Long,CityName,Population<br/>
            1,40.714,-74.006,New York City,8244910<br/>
            2,34.0522,-118.244,Los Angeles,3819702<br/>
            3,41.878,-87.636,Chicago,2708120<br/>
            4,29.763,-95.363,Houston,2099451<br/>
            5,39.952,-75.168,Philadelphia,1526006<br/>
            </para>
            <para>
            The XAML code in this example is used in conjunction with the code-behind (C# or VB.NET) to demonstrate
            the functionality.
            </para>
            <para>
            The following screen shot corresponds to the code example in this page.
            </para>
            <para>
            <img border="0" alt="Adding a CsvLayer via the .SetSource Method to a Map." src="C:\ArcGIS\dotNET\API SDK\Main\ArcGISSilverlightSDK\LibraryReference\images\Client.ToolkitDataSources.CsvLayer.SetSource.png"/>
            </para>
            <code title="Example XAML1" description="" lang="XAML">
            &lt;Grid x:Name="LayoutRoot" &gt;
              
              &lt;!-- Define a SimpleRenderer with a SimpleMarkerSymbol as Resource that can be used in other locations of the project. --&gt;
              &lt;Grid.Resources&gt;
                &lt;esri:SimpleRenderer x:Key="renderer"&gt;
                  &lt;esri:SimpleRenderer.Symbol&gt;
                    &lt;esri:SimpleMarkerSymbol Color="Yellow" Size="20" Style="Circle" /&gt;
                  &lt;/esri:SimpleRenderer.Symbol&gt;
                &lt;/esri:SimpleRenderer&gt;
              &lt;/Grid.Resources&gt;
              
              &lt;!-- Add a Map Control to the application. Set the Extent to North America. --&gt;
              &lt;esri:Map x:Name="Map1" HorizontalAlignment="Left" VerticalAlignment="Top" 
                    Margin="0,212,0,0" Height="376" Width="415" Extent="-15219969,2609636,-6232883,6485365"&gt;
                
                &lt;!-- Add a backdrop ArcGISTiledMapServiceLayer. --&gt;
                &lt;esri:ArcGISTiledMapServiceLayer  ID="World_Topo_Map" 
                      Url="http://services.arcgisonline.com/arcgis/rest/services/world_topo_map/MapServer" /&gt;
                
              &lt;/esri:Map&gt;
              
              &lt;!-- Add a Button that will allow the user to add a CsvLayer via code-behind. --&gt;
              &lt;Button Name="Button1" Height="23" HorizontalAlignment="Left" Margin="0,183,0,0"  VerticalAlignment="Top" 
                      Width="415" Content="Add a CsvLayer (via code-behind) for the specified Url."
                      Click="Button1_Click" /&gt;
              
              &lt;!-- Provide the instructions on how to use the sample code. --&gt;
              &lt;TextBlock Height="174" HorizontalAlignment="Left" Name="TextBlock1" VerticalAlignment="Top" Width="788" 
                         TextWrapping="Wrap" Text="Click the Button to add a CsvLayer to the Map. The CsvLayer will be 
                         created using a local Resouce in the Visual Studio project. The CsvLayer.SetSource Method is
                         used to get the local Resource as a Stream." /&gt;
            &lt;/Grid&gt;
            </code>
            <code title="Example CS1" description="" lang="CS">
            private void Button1_Click(object sender, System.Windows.RoutedEventArgs e)
            {
              // This function executes as a result of the user clicking the Button. It adds a CsvLayer using code-behind.
              
              // Create a CsvLayer. 
              ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer myCsvLayer = new ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer();
              
              // Create a new Uri for the CSV file located on the hard drive. 
              // VERY IMPORTANT: 
              // Replace the first parameter argument of the Uri constructor with the correct string to the location of the CSV 
              // file relative to your test project. In this example the Visual Studio project name is: "TestProject".
              // Additionally, a folder was added to "TestProject" called "myFolder" and this is where the "US_Cities_Top_5.csv 
              // file is located. Finally, make sure that the for the Properties of the US_Cities_Top_5.csv file that the 
              // 'Build Action' is set to 'Resource'.
              Uri myUri = new Uri("/TestProject;component/myFolder/US_Cities_Top_5.csv", UriKind.RelativeOrAbsolute);
              
              // Create a StreamResourceInfo object using the static/Shared Application.GetResourceStream function.
              System.Windows.Resources.StreamResourceInfo myStreamResourceInfo = Application.GetResourceStream(myUri);
              
              // Use the StreamResourceInfo.Stream in the CsvLayer.SetSource Method 
              myCsvLayer.SetSource(myStreamResourceInfo.Stream);
              
              // Set the ID of the CsvLayer.
              myCsvLayer.ID = "US_Cities_Top_5";
              
              // Use the SimpleRenderer with a SimpleMarkerSymbol that was defined in XAML for the CsvLayer.Render Property.
              myCsvLayer.Renderer = (ESRI.ArcGIS.Client.IRenderer)LayoutRoot.Resources["renderer"];
              
              // Add the CsvLayer to the Map.
              Map1.Layers.Add(myCsvLayer);
            }
            </code>
            <code title="Example VB1" description="" lang="VB.NET">
            Private Sub Button1_Click(sender As System.Object, e As System.Windows.RoutedEventArgs)
              
              ' This function executes as a result of the user clicking the Button. It adds a CsvLayer using code-behind.
              
              ' Create a CsvLayer. 
              Dim myCsvLayer As ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer = New ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer
              
              ' Create a new Uri for the CSV file located on the hard drive. 
              ' VERY IMPORTANT: 
              ' Replace the first parameter argument of the Uri constructor with the correct string to the location of the CSV 
              ' file relative to your test project. In this example the Visual Studio project name is: "TestProject".
              ' Additionally, a folder was added to "TestProject" called "myFolder" and this is where the "US_Cities_Top_5.csv 
              ' file is located. Finally, make sure that the for the Properties of the US_Cities_Top_5.csv file that the
              ' 'Build Action' is set to 'Resource'.
              Dim myUri As Uri = New Uri("/TestProject;component/myFolder/US_Cities_Top_5.csv", UriKind.RelativeOrAbsolute)
              
              ' Create a StreamResourceInfo object using the static/Shared Application.GetResourceStream function.
              Dim myStreamResourceInfo As Windows.Resources.StreamResourceInfo = Application.GetResourceStream(myUri)
              
              ' Use the StreamResourceInfo.Stream in the CsvLayer.SetSource Method 
              myCsvLayer.SetSource(myStreamResourceInfo.Stream)
              
              ' Set the ID of the CsvLayer.
              myCsvLayer.ID = "US_Cities_Top_5"
              
              ' Use the SimpleRenderer with a SimpleMarkerSymbol that was defined in XAML for the CsvLayer.Render Property.
              myCsvLayer.Renderer = LayoutRoot.Resources("renderer")
              
              ' Add the CsvLayer to the Map.
              Map1.Layers.Add(myCsvLayer)
              
            End Sub
            </code>
            </example>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer.Initialize">
            <summary>
            Initializes the layer.
            </summary>
            <seealso cref="E:ESRI.ArcGIS.Client.Layer.Initialized"/>
            <seealso cref="P:ESRI.ArcGIS.Client.Layer.InitializationFailure"/>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer.SourceFields">
            <summary>
            The fields that will be added as attribute of the graphic. The FieldName should match the header name contained 
            inside the CSV file. The FieldType will be used to convert column into that specific data type. If FieldSource 
            is empty or null then all fields will be returned as attributes. If FieldType is not provided field type will 
            default to string.
            </summary>
            <remarks>
            <para>
            If it is not desired to convert all of the fields of information in the CSV records into a CsvLayer use the 
            <b>SourceFields</b> Property to set exactly which fields will become attributes in the CsvLayer. If the <b>SourceFields</b> 
            Property is not specified then all fields of information in the CSV file will be used to populate the attributes 
            in the CsvLayer. To restrict which fields are generated in the CsvLayer using the <b>SourceFields</b> Property, create 
            a new the <see cref="T:ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer.FieldCollection">CsvLayer.FieldCollection</see> 
            object and add the specific <see cref="T:ESRI.ArcGIS.Client.Field">Field</see> objects with the minimum Properties 
            of <see cref="P:ESRI.ArcGIS.Client.Field.FieldName">Field.FieldName</see> and 
            <see cref="P:ESRI.ArcGIS.Client.Field.Type">Field.Type</see> being set. The Field.FieldName should match the header 
            name contained inside the CSV file. If Field.Type is not provided field type will default to string.
            </para>
            </remarks>
            <example>
            <para>
            <b>How to use:</b>
            </para>
            <para>
            Click the Button to add a CsvLayer to the Map. The ID of the layer and its attribute information will displayed 
            in the TextBox.
            </para>
            <para>
            The XAML code in this example is used in conjunction with the code-behind (C# or VB.NET) to demonstrate
            the functionality.
            </para>
            <para>
            The following is an example of the ASCII contents for the file named US_Cities_Top_3_ManyFields.csv:<br/>
            ID,Y,X,City,Useless,Population,Clueless,What,MyDate<br/>
            1,40.714,-74.006,NYC,XXX,8244910,QQQ,GGG,12/1/2012<br/>
            2,34.0522,-118.244,LA,YYY,3819702,AAA,TTT,12/2/2012<br/>
            3,41.878,-87.636,Chicago,ZZZ,2708120,ZZZ,UUU,12/3/2012<br/>
            </para>
            <para>
            The following screen shot corresponds to the code example in this page.
            </para>
            <para>
            <img border="0" alt="Specifying which attributes fields to load into a CsvLayer using SourceFields." src="C:\ArcGIS\dotNET\API SDK\Main\ArcGISSilverlightSDK\LibraryReference\images\Client.ToolkitDataSources.CsvLayer.SourceFields.png"/>
            </para>
            <code title="Example XAML1" description="" lang="XAML">
            &lt;Grid x:Name="LayoutRoot" &gt;
              
              &lt;!-- Add a Map Control to the application. Set the Extent to North America. --&gt;
              &lt;esri:Map x:Name="Map1" HorizontalAlignment="Left" VerticalAlignment="Top" 
                    Margin="0,212,0,0" Height="376" Width="415" Extent="-15219969,2609636,-6232883,6485365"&gt;
              
                &lt;!-- Add a backdrop ArcGISTiledMapServiceLayer. --&gt;
                &lt;esri:ArcGISTiledMapServiceLayer  ID="World_Topo_Map" 
                      Url="http://services.arcgisonline.com/arcgis/rest/services/world_topo_map/MapServer" /&gt;
              
              &lt;/esri:Map&gt;
              
              &lt;!-- Add a Button that will allow the user to add a CsvLayer via code-behind. --&gt;
              &lt;Button Name="Button1" Height="23" HorizontalAlignment="Left" Margin="0,183,0,0"  VerticalAlignment="Top" 
                      Width="706" Content="Add a CsvLayer (via code-behind) for the specified Url."
                      Click="Button1_Click" /&gt;
              
              &lt;!-- TextBox to display attribute information about about the CsvLayer added to the Map. --&gt;
              &lt;TextBox Height="376" HorizontalAlignment="Left" Margin="421,212,0,0" Name="TextBox1" VerticalAlignment="Top" 
                       Width="285" /&gt;
              
              &lt;!-- Provide the instructions on how to use the sample code. --&gt;
              &lt;TextBlock Height="174" HorizontalAlignment="Left" Name="TextBlock1" VerticalAlignment="Top" Width="788" 
                         TextWrapping="Wrap" Text="Click the Button to add a CsvLayer to the Map. The ID of the layer and 
                         its attribute information will displayed in the TextBox." /&gt;
            &lt;/Grid&gt;
            </code>
            <code title="Example CS1" description="" lang="CS">
            private void Button1_Click(object sender, System.Windows.RoutedEventArgs e)
            {
              // This function executes as a result of the user clicking the Button. It adds a CsvLayer using code-behind.
              
              // Create a CsvLayer. 
              ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer myCsvLayer = new ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer();
              
              // Set the Url of the CsvLayer to a public service. 
              // NOTE: you need to adjust the Url to a .csv file served up on you test web server.
              myCsvLayer.Url = "http://www.yourserver.com/CSV_Files/US_Cities_Top_3_ManyFields.csv";
              
              // Set the ID of the CsvLayer.
              myCsvLayer.ID = "US_Cities_Top_3_ManyFields";
              
              // Create a FieldCollection object to define what Fields from the CSV file will be imported into the CsvLayer.
              ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer.FieldCollection theSourceFields = null;
              theSourceFields = new ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer.FieldCollection();
              
              // Define the Field objects that will be read in from the CSV file. 
              // NOTE: not all of the attribute fields that are in the CSV file will be converted to Fields in the CsvLayer.
              ESRI.ArcGIS.Client.Field theIDfield = new ESRI.ArcGIS.Client.Field();
              theIDfield.FieldName = "ID";
              theIDfield.Type = ESRI.ArcGIS.Client.Field.FieldType.OID;
              ESRI.ArcGIS.Client.Field theXfield = new ESRI.ArcGIS.Client.Field();
              theXfield.FieldName = "X";
              theXfield.Type = ESRI.ArcGIS.Client.Field.FieldType.Double;
              ESRI.ArcGIS.Client.Field theYfield = new ESRI.ArcGIS.Client.Field();
              theYfield.FieldName = "Y";
              theYfield.Type = ESRI.ArcGIS.Client.Field.FieldType.Double;
              ESRI.ArcGIS.Client.Field theCity = new ESRI.ArcGIS.Client.Field();
              theCity.FieldName = "City";
              theCity.Type = ESRI.ArcGIS.Client.Field.FieldType.String;
              ESRI.ArcGIS.Client.Field thePopulation = new ESRI.ArcGIS.Client.Field();
              thePopulation.FieldName = "Population";
              thePopulation.Type = ESRI.ArcGIS.Client.Field.FieldType.Integer;
              ESRI.ArcGIS.Client.Field theMyDate = new ESRI.ArcGIS.Client.Field();
              theMyDate.FieldName = "MyDate";
              theMyDate.Type = ESRI.ArcGIS.Client.Field.FieldType.Date;
              
              // Add the defined Fields into the FieldCollection object.
              theSourceFields.Add(theIDfield);
              theSourceFields.Add(theXfield);
              theSourceFields.Add(theYfield);
              theSourceFields.Add(theCity);
              theSourceFields.Add(thePopulation);
              theSourceFields.Add(theMyDate);
              
              // Set the custom FieldCollection to the CsvLayer.SourceFields Property.
              myCsvLayer.SourceFields = theSourceFields;
              
              // Create a SimpleMarkerSymbol (a red traingle) for the CsvLayer that will be added.
              ESRI.ArcGIS.Client.Symbols.SimpleMarkerSymbol theSimpleMarkerSymbol = new ESRI.ArcGIS.Client.Symbols.SimpleMarkerSymbol();
              theSimpleMarkerSymbol.Color = new System.Windows.Media.SolidColorBrush(System.Windows.Media.Colors.Red);
              theSimpleMarkerSymbol.Size = 18;
              theSimpleMarkerSymbol.Style = ESRI.ArcGIS.Client.Symbols.SimpleMarkerSymbol.SimpleMarkerStyle.Triangle;
              
              // Define a SimpleRenderer and set the Symbol to the SimpleMarkerSymbol.
              ESRI.ArcGIS.Client.SimpleRenderer theSimpleRenderer = new ESRI.ArcGIS.Client.SimpleRenderer();
              theSimpleRenderer.Symbol = theSimpleMarkerSymbol;
              
              // Define the Renderer for the CsvLayer.
              myCsvLayer.Renderer = theSimpleRenderer;
              
              // Wire-up the Initialized Event of the CsvLayer.
              myCsvLayer.Initialized += CsvLayer_Initialized;
              
              // Add the CsvLayer to the Map.
              Map1.Layers.Add(myCsvLayer);
            }
            
            private void CsvLayer_Initialized(object sender, EventArgs e)
            {
              // This function will execute as a result of the CsvLayer that was defined in code-behind being Initialized.
              
              // Get the CsvLayer.
              ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer myCsvLayer = (ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer)sender;
              
              // Get the ID of the CsvLayer.
              string myID = myCsvLayer.ID;
              
              // Create a StringBuilder object to hold information about the CsvLayer and add some useful information to it.
              System.Text.StringBuilder myStringBuilder = new System.Text.StringBuilder();
              myStringBuilder.Append("The CsvLayer and it's ID is: " + Environment.NewLine);
              myStringBuilder.Append(myID + Environment.NewLine);
              myStringBuilder.Append("====================================" + Environment.NewLine);
              
              // Get the GraphicCollection from the CsvLayer.
              ESRI.ArcGIS.Client.GraphicCollection theGraphicCollection = myCsvLayer.Graphics;
              if (theGraphicCollection != null)
              {
                // Loop through each Graphic.
                foreach (ESRI.ArcGIS.Client.Graphic oneGraphic in theGraphicCollection)
                {
                  // Get the Attribute Keys. 
                  System.Collections.Generic.ICollection&lt;string&gt; theFieldNameKeys = oneGraphic.Attributes.Keys;
                  
                  // Loop through each Attribute.
                  foreach (var oneKey in theFieldNameKeys)
                  {
                    // Get the value of the Attribute Field.
                    string theValue = oneGraphic.Attributes[oneKey].ToString();
                    
                    // Get the Type of the Attribute Field.
                    string oneFieldType = oneGraphic.Attributes[oneKey].GetType().ToString();
                    
                    // Add the Attribute Field name, OS data type, and Attribute value to the StringBuilder object.
                    myStringBuilder.Append(oneKey.ToString() + "(" + oneFieldType + "): " + theValue + Environment.NewLine);
                  }
                  myStringBuilder.Append(Environment.NewLine);
                }
              }
              
              // Display the results of the StringBuilder text to the user.
              TextBox1.Text = myStringBuilder.ToString();
            }
            </code>
            <code title="Example VB1" description="" lang="VB.NET">
            Private Sub Button1_Click(sender As System.Object, e As System.Windows.RoutedEventArgs)
            
              ' This function executes as a result of the user clicking the Button. It adds a CsvLayer using code-behind.
              
              ' Create a CsvLayer. 
              Dim myCsvLayer As ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer = New ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer
              
              ' Set the Url of the CsvLayer to a public service. 
              ' NOTE: you need to adjust the Url to a .csv file served up on you test web server.
              myCsvLayer.Url = "http://www.yourserver.com/CSV_Files/US_Cities_Top_3_ManyFields.csv"
              
              ' Set the ID of the CsvLayer.
              myCsvLayer.ID = "US_Cities_Top_3_ManyFields"
              
              ' Create a FieldCollection object to define what Fields from the CSV file will be imported into the CsvLayer.
              Dim theSourceFields As ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer.FieldCollection
              theSourceFields = New ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer.FieldCollection
              
              ' Define the Field objects that will be read in from the CSV file. 
              ' NOTE: not all of the attribute fields that are in the CSV file will be converted to Fields in the CsvLayer.
              Dim theIDfield As ESRI.ArcGIS.Client.Field = New ESRI.ArcGIS.Client.Field
              theIDfield.FieldName = "ID"
              theIDfield.Type = ESRI.ArcGIS.Client.Field.FieldType.OID
              Dim theXfield As ESRI.ArcGIS.Client.Field = New ESRI.ArcGIS.Client.Field
              theXfield.FieldName = "X"
              theXfield.Type = ESRI.ArcGIS.Client.Field.FieldType.Double
              Dim theYfield As ESRI.ArcGIS.Client.Field = New ESRI.ArcGIS.Client.Field
              theYfield.FieldName = "Y"
              theYfield.Type = ESRI.ArcGIS.Client.Field.FieldType.Double
              Dim theCity As ESRI.ArcGIS.Client.Field = New ESRI.ArcGIS.Client.Field
              theCity.FieldName = "City"
              theCity.Type = ESRI.ArcGIS.Client.Field.FieldType.String
              Dim thePopulation As ESRI.ArcGIS.Client.Field = New ESRI.ArcGIS.Client.Field
              thePopulation.FieldName = "Population"
              thePopulation.Type = ESRI.ArcGIS.Client.Field.FieldType.Integer
              Dim theMyDate As ESRI.ArcGIS.Client.Field = New ESRI.ArcGIS.Client.Field
              theMyDate.FieldName = "MyDate"
              theMyDate.Type = ESRI.ArcGIS.Client.Field.FieldType.Date
              
              ' Add the defined Fields into the FieldCollection object.
              theSourceFields.Add(theIDfield)
              theSourceFields.Add(theXfield)
              theSourceFields.Add(theYfield)
              theSourceFields.Add(theCity)
              theSourceFields.Add(thePopulation)
              theSourceFields.Add(theMyDate)
              
              ' Set the custom FieldCollection to the CsvLayer.SourceFields Property.
              myCsvLayer.SourceFields = theSourceFields
              
              ' Create a SimpleMarkerSymbol (a red traingle) for the CsvLayer that will be added.
              Dim theSimpleMarkerSymbol As ESRI.ArcGIS.Client.Symbols.SimpleMarkerSymbol = New ESRI.ArcGIS.Client.Symbols.SimpleMarkerSymbol
              theSimpleMarkerSymbol.Color = New System.Windows.Media.SolidColorBrush(System.Windows.Media.Colors.Red)
              theSimpleMarkerSymbol.Size = 18
              theSimpleMarkerSymbol.Style = ESRI.ArcGIS.Client.Symbols.SimpleMarkerSymbol.SimpleMarkerStyle.Triangle
              
              ' Define a SimpleRenderer and set the Symbol to the SimpleMarkerSymbol.
              Dim theSimpleRenderer As ESRI.ArcGIS.Client.SimpleRenderer = New ESRI.ArcGIS.Client.SimpleRenderer
              theSimpleRenderer.Symbol = theSimpleMarkerSymbol
              
              ' Define the Renderer for the CsvLayer.
              myCsvLayer.Renderer = theSimpleRenderer
              
              ' Wire-up the Initialized Event of the CsvLayer.
              AddHandler myCsvLayer.Initialized, AddressOf CsvLayer_Initialized
              
              ' Add the CsvLayer to the Map.
              Map1.Layers.Add(myCsvLayer)
              
            End Sub
            
            Private Sub CsvLayer_Initialized(sender As Object, e As EventArgs)
              
              ' This function will execute as a result of the CsvLayer that was defined in code-behind being Initialized.
              
              ' Get the CsvLayer.
              Dim myCsvLayer As ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer = CType(sender, ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer)
              
              ' Get the ID of the CsvLayer.
              Dim myID As String = myCsvLayer.ID
              
              ' Create a StringBuilder object to hold information about the CsvLayer and add some useful information to it.
              Dim myStringBuilder As New Text.StringBuilder
              myStringBuilder.Append("The CsvLayer and it's ID is: " + vbCrLf)
              myStringBuilder.Append(myID + vbCrLf)
              myStringBuilder.Append("====================================" + vbCrLf)
              
              ' Get the GraphicCollection from the CsvLayer.
              Dim theGraphicCollection As ESRI.ArcGIS.Client.GraphicCollection = myCsvLayer.Graphics
              If theGraphicCollection IsNot Nothing Then
                
                ' Loop through each Graphic.
                For Each oneGraphic As ESRI.ArcGIS.Client.Graphic In theGraphicCollection
                  
                  ' Get the Attribute Keys. 
                  Dim theFieldNameKeys As System.Collections.Generic.ICollection(Of String) = oneGraphic.Attributes.Keys
                  
                  ' Loop through each Attribute.
                  For Each oneKey In theFieldNameKeys
                    
                    ' Get the value of the Attribute Field.
                    Dim theValue As String = oneGraphic.Attributes(oneKey)
                    
                    ' Get the Type of the Attribute Field.
                    Dim oneFieldType As String = oneGraphic.Attributes(oneKey).GetType.ToString
                    
                    ' Add the Attribute Field name, OS data type, and Attribute value to the StringBuilder object.
                    myStringBuilder.Append(oneKey.ToString + "(" + oneFieldType + "): " + theValue + vbCrLf)
                    
                  Next
                  myStringBuilder.Append(vbCrLf)
                Next
                
              End If
              
              ' Display the results of the StringBuilder text to the user.
              TextBox1.Text = myStringBuilder.ToString
              
            End Sub
            </code>
            </example>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer.XFieldName">
            <summary>
            The name of the column header in the CSV file that contains the data used for the X coordinate.
            </summary>
            <remarks>
            <para>
            In order to make use of CSV files in the 
            ArcGIS API for Silverlight
            
            
             there should be point based spatial locational coordinate information for each record. This spatial information 
             defines the <see cref="T:ESRI.ArcGIS.Client.Geometry.MapPoint">MapPoint</see> that will be used to construct a 
             custom <see cref="T:ESRI.ArcGIS.Client.GraphicsLayer">GraphicsLayer</see>. Other geography types like Polyline or 
             Polygon are not supported for constructing a CsvLayer. Unless specified otherwise in the 
             <see cref="P:ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer.SourceSpatialReference">SourceSpatialReference</see> 
             Property, it is assumed that the <see cref="T:ESRI.ArcGIS.Client.Geometry.SpatialReference">SpatialReference</see> 
             of the CsvLayer has a WKID value of 4326. During the parsing process of reading the header record of the CSV file 
             to construct the CsvLayer, any of the following names can be used to automatically detect the spatial location 
             coordinate information:
            </para>
            <list type="table">  
            <listheader><term>Coordinate Type</term><description>Automatically detected Field names</description></listheader>  
            <item><term>LATITUDE</term><description>"lat", "latitude", "y", "ycenter", "latitude83", "latdecdeg", "point-y"</description></item>
            <item><term>LONGITUDE</term><description>"lon", "lng", "long", "longitude", "x", "xcenter", "longitude83", "longdecdeg", "point-x"</description></item>
            </list>
            <para>
            NOTE: The CsvLayer parsing algorithm for the Field names listed in the table above is case insensitive. 
            </para>
            <para>
            If the above spatial location coordinate field names are not specified in the header record, then it will be 
            required to specify them explicitly. Use the <b>XFieldName</b> Property to explicitly specify the Longitude coordinate
            and the <see cref="P:ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer.YFieldName">YFieldName</see> Property to 
            explicitly specify the Latitude coordinate.
            </para>
            </remarks>
            <example>
            <para>
            <b>How to use:</b>
            </para>
            <para>
            Click the Button to add a CsvLayer to the Map. The ID of the layer and its attribute information will displayed 
            in the TextBox.
            </para>
            <para>
            The XAML code in this example is used in conjunction with the code-behind (C# or VB.NET) to demonstrate
            the functionality.
            </para>
            <para>
            The following is an example of the ASCII contents for the file named US_Cities_Top_3.csv:<br/>
            ID,MySuperY,MySuperX,CityNameStateAbbr,Population<br/>
            1,40.714,-74.006,"New York City, NY",8244910<br/>
            2,34.0522,-118.244,"Los Angeles, CA",3819702<br/>
            3,41.878,-87.636,"Chicago, IL",2708120<br/>
            </para>
            <para>
            The following screen shot corresponds to the code example in this page.
            </para>
            <para>
            <img border="0" alt="Adding a CSV layer and displaying its attribute information." src="C:\ArcGIS\dotNET\API SDK\Main\ArcGISSilverlightSDK\LibraryReference\images\Client.ToolkitDataSources.CsvLayer.XFieldNameYFieldName.png"/>
            </para>
            <code title="Example XAML1" description="" lang="XAML">
            &lt;Grid x:Name="LayoutRoot" &gt;
              
              &lt;!-- Add a Map Control to the application. Set the Extent to North America. --&gt;
              &lt;esri:Map x:Name="Map1" HorizontalAlignment="Left" VerticalAlignment="Top" 
                    Margin="0,238,0,0" Height="350" Width="415" Extent="-15219969,2609636,-6232883,6485365"&gt;
                
                &lt;!-- Add a backdrop ArcGISTiledMapServiceLayer. --&gt;
                &lt;esri:ArcGISTiledMapServiceLayer  ID="World_Topo_Map" 
                      Url="http://services.arcgisonline.com/arcgis/rest/services/world_topo_map/MapServer" /&gt;
              
              &lt;/esri:Map&gt;
              
              &lt;!-- Add a Button that will allow the user to add a CsvLayer via code-behind. --&gt;
              &lt;Button Name="Button1" Height="23" HorizontalAlignment="Left" Margin="0,209,0,0"  VerticalAlignment="Top" 
                      Width="706" Content="Add a CsvLayer (via code-behind) for the specified Url."
                      Click="Button1_Click" /&gt;
              
              &lt;!-- TextBox to display attribute information about about the CsvLayer added to the Map. --&gt;
              &lt;TextBox Height="350" HorizontalAlignment="Left" Margin="421,238,0,0" Name="TextBox1" VerticalAlignment="Top" 
                       Width="285" /&gt;
              
              &lt;!-- Provide the instructions on how to use the sample code. --&gt;
              &lt;TextBlock Height="174" HorizontalAlignment="Left" Name="TextBlock1" VerticalAlignment="Top" Width="788" 
                         TextWrapping="Wrap" Text="Click the Button to add a CsvLayer to the Map. The ID of the layer and 
                         its attribute information will displayed in the TextBox." /&gt;
            &lt;/Grid&gt;
            </code>
            <code title="Example CS1" description="" lang="CS">
            private void Button1_Click(object sender, System.Windows.RoutedEventArgs e)
            {
              // This function executes as a result of the user clicking the Button. It adds a CsvLayer using code-behind.
              
              // Create a CsvLayer. 
              ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer myCsvLayer = new ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer();
              
              // Set the Url of the CsvLayer to a public service. 
              // NOTE: you need to adjust the Url to a .csv file served up on you test web server.
              myCsvLayer.Url = "http://www.yourserver.com/CSV_Files/US_Cities_Top_3.csv";
              
              // Set the ID of the CsvLayer.
              myCsvLayer.ID = "US_Cities_Top_3";
              
              // Set the XFieldName and YFieldName Properties. This CSV file does not use standard X &amp; Y field names.
              myCsvLayer.XFieldName = "MySuperX";
              myCsvLayer.YFieldName = "MySuperY";
              
              // Create a SimpleMarkerSymbol (a black square) for the CsvLayer that will be added.
              ESRI.ArcGIS.Client.Symbols.SimpleMarkerSymbol theSimpleMarkerSymbol = new ESRI.ArcGIS.Client.Symbols.SimpleMarkerSymbol();
              theSimpleMarkerSymbol.Color = new System.Windows.Media.SolidColorBrush(System.Windows.Media.Colors.Black);
              theSimpleMarkerSymbol.Size = 12;
              theSimpleMarkerSymbol.Style = ESRI.ArcGIS.Client.Symbols.SimpleMarkerSymbol.SimpleMarkerStyle.Square;
              
              // Define a SimpleRenderer and set the Symbol to the SimpleMarkerSymbol.
              ESRI.ArcGIS.Client.SimpleRenderer theSimpleRenderer = new ESRI.ArcGIS.Client.SimpleRenderer();
              theSimpleRenderer.Symbol = theSimpleMarkerSymbol;
              
              // Define the Renderer for the CsvLayer.
              myCsvLayer.Renderer = theSimpleRenderer;
              
              // Wire-up the Initialized Event of the CsvLayer. 
              myCsvLayer.Initialized += CsvLayer_Initialized;
              
              // Add the CsvLayer to the Map.
              Map1.Layers.Add(myCsvLayer);
            }
            
            private void CsvLayer_Initialized(object sender, EventArgs e)
            {
              // This function will execute as a result of the CsvLayer that was defined in code-behind being Initialized.
              
              // Get the CsvLayer.
              ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer myCsvLayer = (ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer)sender;
              
              // Get the ID of the CsvLayer.
              string myID = myCsvLayer.ID;
              
              // Create a StringBuilder object to hold information about the CsvLayer and add some useful information to it.
              System.Text.StringBuilder myStringBuilder = new System.Text.StringBuilder();
              myStringBuilder.Append("The CsvLayer and it's ID is: " + Environment.NewLine);
              myStringBuilder.Append(myID + Environment.NewLine);
              myStringBuilder.Append("====================================" + Environment.NewLine);
              
              // Get the GraphicCollection from the CsvLayer.
              ESRI.ArcGIS.Client.GraphicCollection theGraphicCollection = myCsvLayer.Graphics;
              if (theGraphicCollection != null)
              {
                // Loop through each Graphic.
                foreach (ESRI.ArcGIS.Client.Graphic oneGraphic in theGraphicCollection)
                {
                  // Get the Attribute Keys. 
                  System.Collections.Generic.ICollection&lt;string&gt; theFieldNameKeys = oneGraphic.Attributes.Keys;
                  
                  // Loop through each Attribute.
                  foreach (var oneKey in theFieldNameKeys)
                  {
                    // Get the value of the Attribute Field.
                    string theValue = (string)oneGraphic.Attributes[oneKey];
                    
                    // Add the Attribute Field name and Attribute value to the StringBuilder object.
                    myStringBuilder.Append(oneKey.ToString() + ": " + theValue + Environment.NewLine);
                  }
                }
              }
              
              // Display the results of the StringBuilder text to the user.
              TextBox1.Text = myStringBuilder.ToString();
            }
            </code>
            <code title="Example VB1" description="" lang="VB.NET">
            Private Sub Button1_Click(sender As System.Object, e As System.Windows.RoutedEventArgs)
              
              ' This function executes as a result of the user clicking the Button. It adds a CsvLayer using code-behind.
              
              ' Create a CsvLayer. 
              Dim myCsvLayer As ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer = New ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer
              
              ' Set the Url of the CsvLayer to a public service. 
              ' NOTE: you need to adjust the Url to a .csv file served up on you test web server.
              myCsvLayer.Url = "http://www.yourserver.com/CSV_Files/US_Cities_Top_3.csv"
              
              ' Set the ID of the CsvLayer.
              myCsvLayer.ID = "US_Cities_Top_3"
              
              ' Set the XFieldName and YFieldName Properties. This CSV file does not use standard X &amp; Y field names.
              myCsvLayer.XFieldName = "MySuperX"
              myCsvLayer.YFieldName = "MySuperY"
              
              ' Create a SimpleMarkerSymbol (a black square) for the CsvLayer that will be added.
              Dim theSimpleMarkerSymbol As ESRI.ArcGIS.Client.Symbols.SimpleMarkerSymbol = New ESRI.ArcGIS.Client.Symbols.SimpleMarkerSymbol
              theSimpleMarkerSymbol.Color = New System.Windows.Media.SolidColorBrush(System.Windows.Media.Colors.Black)
              theSimpleMarkerSymbol.Size = 12
              theSimpleMarkerSymbol.Style = ESRI.ArcGIS.Client.Symbols.SimpleMarkerSymbol.SimpleMarkerStyle.Square
              
              ' Define a SimpleRenderer and set the Symbol to the SimpleMarkerSymbol.
              Dim theSimpleRenderer As ESRI.ArcGIS.Client.SimpleRenderer = New ESRI.ArcGIS.Client.SimpleRenderer
              theSimpleRenderer.Symbol = theSimpleMarkerSymbol
              
              ' Define the Renderer for the CsvLayer.
              myCsvLayer.Renderer = theSimpleRenderer
              
              ' Wire-up the Initialized Event of the CsvLayer.
              AddHandler myCsvLayer.Initialized, AddressOf CsvLayer_Initialized
              
              ' Add the CsvLayer to the Map.
              Map1.Layers.Add(myCsvLayer)
              
            End Sub
            
            Private Sub CsvLayer_Initialized(sender As Object, e As EventArgs)
              
              ' This function will execute as a result of the CsvLayer that was defined in code-behind being Initialized.
              
              ' Get the CsvLayer.
              Dim myCsvLayer As ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer = CType(sender, ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer)
              
              ' Get the ID of the CsvLayer.
              Dim myID As String = myCsvLayer.ID
              
              ' Create a StringBuilder object to hold information about the CsvLayer and add some useful information to it.
              Dim myStringBuilder As New Text.StringBuilder
              myStringBuilder.Append("The CsvLayer and it's ID is: " + vbCrLf)
              myStringBuilder.Append(myID + vbCrLf)
              myStringBuilder.Append("====================================" + vbCrLf)
              
              ' Get the GraphicCollection from the CsvLayer.
              Dim theGraphicCollection As ESRI.ArcGIS.Client.GraphicCollection = myCsvLayer.Graphics
              If theGraphicCollection IsNot Nothing Then
                
                ' Loop through each Graphic.
                For Each oneGraphic As ESRI.ArcGIS.Client.Graphic In theGraphicCollection
                  
                  ' Get the Attribute Keys. 
                  Dim theFieldNameKeys As System.Collections.Generic.ICollection(Of String) = oneGraphic.Attributes.Keys
                  
                  ' Loop through each Attribute.
                  For Each oneKey In theFieldNameKeys
                    
                    ' Get the value of the Attribute Field.
                    Dim theValue As String = oneGraphic.Attributes(oneKey)
                    
                    ' Add the Attribute Field name and Attribute value to the StringBuilder object.
                    myStringBuilder.Append(oneKey.ToString + ": " + theValue + vbCrLf)
                    
                  Next
                  
                Next
                
              End If
              
              ' Display the results of the StringBuilder text to the user.
              TextBox1.Text = myStringBuilder.ToString
              
            End Sub
            </code>
            </example>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer.YFieldName">
            <summary>
            The name of the column header in the CSV file that contains the data used for the Y coordinate.
            </summary>
            <remarks>
            <para>
            In order to make use of CSV files in the 
            ArcGIS API for Silverlight
            
            
             there should be point based spatial locational coordinate information for each record. This spatial information 
             defines the <see cref="T:ESRI.ArcGIS.Client.Geometry.MapPoint">MapPoint</see> that will be used to construct a 
             custom <see cref="T:ESRI.ArcGIS.Client.GraphicsLayer">GraphicsLayer</see>. Other geography types like Polyline or 
             Polygon are not supported for constructing a CsvLayer. Unless specified otherwise in the 
             <see cref="P:ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer.SourceSpatialReference">SourceSpatialReference</see> 
             Property, it is assumed that the <see cref="T:ESRI.ArcGIS.Client.Geometry.SpatialReference">SpatialReference</see> 
             of the CsvLayer has a WKID value of 4326. During the parsing process of reading the header record of the CSV file 
             to construct the CsvLayer, any of the following names can be used to automatically detect the spatial location 
             coordinate information:
            </para>
            <list type="table">  
            <listheader><term>Coordinate Type</term><description>Automatically detected Field names</description></listheader>  
            <item><term>LATITUDE</term><description>"lat", "latitude", "y", "ycenter", "latitude83", "latdecdeg", "point-y"</description></item>
            <item><term>LONGITUDE</term><description>"lon", "lng", "long", "longitude", "x", "xcenter", "longitude83", "longdecdeg", "point-x"</description></item>
            </list>
            <para>
            NOTE: The CsvLayer parsing algorithm for the Field names listed in the table above is case insensitive. 
            </para>
            <para>
            If the above spatial location coordinate field names are not specified in the header record, then it will be 
            required to specify them explicitly. Use the 
            <see cref="P:ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer.XFieldName">XFieldName</see> Property to explicitly 
            specify the Longitude coordinate and the <b>YFieldName</b> Property to explicitly specify the Latitude coordinate.
            </para>
            </remarks>
            <example>
            <para>
            <b>How to use:</b>
            </para>
            <para>
            Click the Button to add a CsvLayer to the Map. The ID of the layer and its attribute information will displayed 
            in the TextBox.
            </para>
            <para>
            The XAML code in this example is used in conjunction with the code-behind (C# or VB.NET) to demonstrate
            the functionality.
            </para>
            <para>
            The following is an example of the ASCII contents for the file named US_Cities_Top_3.csv:<br/>
            ID,MySuperY,MySuperX,CityNameStateAbbr,Population<br/>
            1,40.714,-74.006,"New York City, NY",8244910<br/>
            2,34.0522,-118.244,"Los Angeles, CA",3819702<br/>
            3,41.878,-87.636,"Chicago, IL",2708120<br/>
            </para>
            <para>
            The following screen shot corresponds to the code example in this page.
            </para>
            <para>
            <img border="0" alt="Adding a CSV layer and displaying its attribute information." src="C:\ArcGIS\dotNET\API SDK\Main\ArcGISSilverlightSDK\LibraryReference\images\Client.ToolkitDataSources.CsvLayer.XFieldNameYFieldName.png"/>
            </para>
            <code title="Example XAML1" description="" lang="XAML">
            &lt;Grid x:Name="LayoutRoot" &gt;
              
              &lt;!-- Add a Map Control to the application. Set the Extent to North America. --&gt;
              &lt;esri:Map x:Name="Map1" HorizontalAlignment="Left" VerticalAlignment="Top" 
                    Margin="0,238,0,0" Height="350" Width="415" Extent="-15219969,2609636,-6232883,6485365"&gt;
                
                &lt;!-- Add a backdrop ArcGISTiledMapServiceLayer. --&gt;
                &lt;esri:ArcGISTiledMapServiceLayer  ID="World_Topo_Map" 
                      Url="http://services.arcgisonline.com/arcgis/rest/services/world_topo_map/MapServer" /&gt;
              
              &lt;/esri:Map&gt;
              
              &lt;!-- Add a Button that will allow the user to add a CsvLayer via code-behind. --&gt;
              &lt;Button Name="Button1" Height="23" HorizontalAlignment="Left" Margin="0,209,0,0"  VerticalAlignment="Top" 
                      Width="706" Content="Add a CsvLayer (via code-behind) for the specified Url."
                      Click="Button1_Click" /&gt;
              
              &lt;!-- TextBox to display attribute information about about the CsvLayer added to the Map. --&gt;
              &lt;TextBox Height="350" HorizontalAlignment="Left" Margin="421,238,0,0" Name="TextBox1" VerticalAlignment="Top" 
                       Width="285" /&gt;
              
              &lt;!-- Provide the instructions on how to use the sample code. --&gt;
              &lt;TextBlock Height="174" HorizontalAlignment="Left" Name="TextBlock1" VerticalAlignment="Top" Width="788" 
                         TextWrapping="Wrap" Text="Click the Button to add a CsvLayer to the Map. The ID of the layer and 
                         its attribute information will displayed in the TextBox." /&gt;
            &lt;/Grid&gt;
            </code>
            <code title="Example CS1" description="" lang="CS">
            private void Button1_Click(object sender, System.Windows.RoutedEventArgs e)
            {
              // This function executes as a result of the user clicking the Button. It adds a CsvLayer using code-behind.
              
              // Create a CsvLayer. 
              ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer myCsvLayer = new ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer();
              
              // Set the Url of the CsvLayer to a public service. 
              // NOTE: you need to adjust the Url to a .csv file served up on you test web server.
              myCsvLayer.Url = "http://www.yourserver.com/CSV_Files/US_Cities_Top_3.csv";
              
              // Set the ID of the CsvLayer.
              myCsvLayer.ID = "US_Cities_Top_3";
              
              // Set the XFieldName and YFieldName Properties. This CSV file does not use standard X &amp; Y field names.
              myCsvLayer.XFieldName = "MySuperX";
              myCsvLayer.YFieldName = "MySuperY";
              
              // Create a SimpleMarkerSymbol (a black square) for the CsvLayer that will be added.
              ESRI.ArcGIS.Client.Symbols.SimpleMarkerSymbol theSimpleMarkerSymbol = new ESRI.ArcGIS.Client.Symbols.SimpleMarkerSymbol();
              theSimpleMarkerSymbol.Color = new System.Windows.Media.SolidColorBrush(System.Windows.Media.Colors.Black);
              theSimpleMarkerSymbol.Size = 12;
              theSimpleMarkerSymbol.Style = ESRI.ArcGIS.Client.Symbols.SimpleMarkerSymbol.SimpleMarkerStyle.Square;
              
              // Define a SimpleRenderer and set the Symbol to the SimpleMarkerSymbol.
              ESRI.ArcGIS.Client.SimpleRenderer theSimpleRenderer = new ESRI.ArcGIS.Client.SimpleRenderer();
              theSimpleRenderer.Symbol = theSimpleMarkerSymbol;
              
              // Define the Renderer for the CsvLayer.
              myCsvLayer.Renderer = theSimpleRenderer;
              
              // Wire-up the Initialized Event of the CsvLayer. 
              myCsvLayer.Initialized += CsvLayer_Initialized;
              
              // Add the CsvLayer to the Map.
              Map1.Layers.Add(myCsvLayer);
            }
            
            private void CsvLayer_Initialized(object sender, EventArgs e)
            {
              // This function will execute as a result of the CsvLayer that was defined in code-behind being Initialized.
              
              // Get the CsvLayer.
              ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer myCsvLayer = (ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer)sender;
              
              // Get the ID of the CsvLayer.
              string myID = myCsvLayer.ID;
              
              // Create a StringBuilder object to hold information about the CsvLayer and add some useful information to it.
              System.Text.StringBuilder myStringBuilder = new System.Text.StringBuilder();
              myStringBuilder.Append("The CsvLayer and it's ID is: " + Environment.NewLine);
              myStringBuilder.Append(myID + Environment.NewLine);
              myStringBuilder.Append("====================================" + Environment.NewLine);
              
              // Get the GraphicCollection from the CsvLayer.
              ESRI.ArcGIS.Client.GraphicCollection theGraphicCollection = myCsvLayer.Graphics;
              if (theGraphicCollection != null)
              {
                // Loop through each Graphic.
                foreach (ESRI.ArcGIS.Client.Graphic oneGraphic in theGraphicCollection)
                {
                  // Get the Attribute Keys. 
                  System.Collections.Generic.ICollection&lt;string&gt; theFieldNameKeys = oneGraphic.Attributes.Keys;
                  
                  // Loop through each Attribute.
                  foreach (var oneKey in theFieldNameKeys)
                  {
                    // Get the value of the Attribute Field.
                    string theValue = (string)oneGraphic.Attributes[oneKey];
                    
                    // Add the Attribute Field name and Attribute value to the StringBuilder object.
                    myStringBuilder.Append(oneKey.ToString() + ": " + theValue + Environment.NewLine);
                  }
                }
              }
              
              // Display the results of the StringBuilder text to the user.
              TextBox1.Text = myStringBuilder.ToString();
            }
            </code>
            <code title="Example VB1" description="" lang="VB.NET">
            Private Sub Button1_Click(sender As System.Object, e As System.Windows.RoutedEventArgs)
              
              ' This function executes as a result of the user clicking the Button. It adds a CsvLayer using code-behind.
              
              ' Create a CsvLayer. 
              Dim myCsvLayer As ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer = New ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer
              
              ' Set the Url of the CsvLayer to a public service. 
              ' NOTE: you need to adjust the Url to a .csv file served up on you test web server.
              myCsvLayer.Url = "http://www.yourserver.com/CSV_Files/US_Cities_Top_3.csv"
              
              ' Set the ID of the CsvLayer.
              myCsvLayer.ID = "US_Cities_Top_3"
              
              ' Set the XFieldName and YFieldName Properties. This CSV file does not use standard X &amp; Y field names.
              myCsvLayer.XFieldName = "MySuperX"
              myCsvLayer.YFieldName = "MySuperY"
              
              ' Create a SimpleMarkerSymbol (a black square) for the CsvLayer that will be added.
              Dim theSimpleMarkerSymbol As ESRI.ArcGIS.Client.Symbols.SimpleMarkerSymbol = New ESRI.ArcGIS.Client.Symbols.SimpleMarkerSymbol
              theSimpleMarkerSymbol.Color = New System.Windows.Media.SolidColorBrush(System.Windows.Media.Colors.Black)
              theSimpleMarkerSymbol.Size = 12
              theSimpleMarkerSymbol.Style = ESRI.ArcGIS.Client.Symbols.SimpleMarkerSymbol.SimpleMarkerStyle.Square
              
              ' Define a SimpleRenderer and set the Symbol to the SimpleMarkerSymbol.
              Dim theSimpleRenderer As ESRI.ArcGIS.Client.SimpleRenderer = New ESRI.ArcGIS.Client.SimpleRenderer
              theSimpleRenderer.Symbol = theSimpleMarkerSymbol
              
              ' Define the Renderer for the CsvLayer.
              myCsvLayer.Renderer = theSimpleRenderer
              
              ' Wire-up the Initialized Event of the CsvLayer.
              AddHandler myCsvLayer.Initialized, AddressOf CsvLayer_Initialized
              
              ' Add the CsvLayer to the Map.
              Map1.Layers.Add(myCsvLayer)
              
            End Sub
            
            Private Sub CsvLayer_Initialized(sender As Object, e As EventArgs)
              
              ' This function will execute as a result of the CsvLayer that was defined in code-behind being Initialized.
              
              ' Get the CsvLayer.
              Dim myCsvLayer As ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer = CType(sender, ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer)
              
              ' Get the ID of the CsvLayer.
              Dim myID As String = myCsvLayer.ID
              
              ' Create a StringBuilder object to hold information about the CsvLayer and add some useful information to it.
              Dim myStringBuilder As New Text.StringBuilder
              myStringBuilder.Append("The CsvLayer and it's ID is: " + vbCrLf)
              myStringBuilder.Append(myID + vbCrLf)
              myStringBuilder.Append("====================================" + vbCrLf)
              
              ' Get the GraphicCollection from the CsvLayer.
              Dim theGraphicCollection As ESRI.ArcGIS.Client.GraphicCollection = myCsvLayer.Graphics
              If theGraphicCollection IsNot Nothing Then
                
                ' Loop through each Graphic.
                For Each oneGraphic As ESRI.ArcGIS.Client.Graphic In theGraphicCollection
                  
                  ' Get the Attribute Keys. 
                  Dim theFieldNameKeys As System.Collections.Generic.ICollection(Of String) = oneGraphic.Attributes.Keys
                  
                  ' Loop through each Attribute.
                  For Each oneKey In theFieldNameKeys
                    
                    ' Get the value of the Attribute Field.
                    Dim theValue As String = oneGraphic.Attributes(oneKey)
                    
                    ' Add the Attribute Field name and Attribute value to the StringBuilder object.
                    myStringBuilder.Append(oneKey.ToString + ": " + theValue + vbCrLf)
                    
                  Next
                  
                Next
                
              End If
              
              ' Display the results of the StringBuilder text to the user.
              TextBox1.Text = myStringBuilder.ToString
              
            End Sub
            </code>
            </example>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer.ColumnDelimiter">
            <summary>
            The column delimiter used to split the columns of the CSV file. The default value is comma.
            </summary>
            <remarks>
            <para>
            By default it is assumed that the delimiter for the CSV file in parsing data values for between fields is the 
            comma (,). If another delimiter is used (for example a tab or dash) it is required to specify the ColumnDelimiter
            Property. If the comma is used as the delimiter in the CSV file the <b>ColumnDelimiter</b> Property does not need to 
            be set.
            </para>
            </remarks>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer.Url">
            <summary>
            Url location to CSV file.
            </summary>
            <remarks>
            <para>
            The CSV file format is tabular data in plain text. The data in the CSV file consists of fields of data separated 
            by a delimiting character (typically a comma) for a record. The first record in the CSV file is known as the 
            header and defines the names of each field of the tabular data. The second through last row of records in the 
            CSV file is the actual tabular data. When the delimiter (typically a comma) is embedded in the tabular data 
            for a particular field, that value should be encased in quotes to avoid parsing errors. Each record in the 
            CSV file should contain the same number of fields. Numerous applications including the Microsoft Excel Office 
            product can export and import CSV files. It is not required that a CSV source file contain the extension .csv; 
            the file can contain any extension (ex: .txt) or none at all.
            </para>
            <para>
            If it is desired to obtain the CSV data from a 
            <a href="http://msdn.microsoft.com/en-us/library/system.io.stream(v=vs.100).aspx" target="_blank">Stream</a> 
            rather than the <b>Url</b> Property use the <see cref="M:ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer.SetSource(System.IO.Stream)">SetSource</see> 
            Method.
            </para>
            <para>Although ArcGIS Server is not required to host a CSV file web service you may experience the similar hosting issues of accessing the web service as described in the ArcGIS Resource Center blog entitled <a href="http://blogs.esri.com/esri/arcgis/2009/08/24/troubleshooting-blank-layers/">Troubleshooting blank layers</a>. Specifically, you may need to make sure that a correct <a href="http://msdn.microsoft.com/EN-US/LIBRARY/CC197955(VS.95).ASPX" target="_blank">cilentaccesspolicy.xml or crossdomain.xml</a> file is in place on the web servers root. If a clientaccesspolicy.xml or crossdomainpolicy.xml file cannot be used on your web server for situations like <a href="http://resources.arcgis.com/en/help/silverlight-api/concepts/index.html#/Secure_services/016600000022000000/">secure services</a> you may need to use a <a href="http://resources.arcgis.com/en/help/silverlight-api/concepts/0166/other/SLProxyPage.zip">proxy page</a> on your web server and make use of the <b>CsvLayer.ProxyUrl</b> Property.</para>
            <para>
            The bare minimum settings that need to be specified to create and display a CsvLayer in a Map are the 
            <b>Url</b> and <see cref="P:ESRI.ArcGIS.Client.GraphicsLayer.Renderer">Renderer</see> Properties (Url methadology) OR 
            the <see cref="M:ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer.SetSource(System.IO.Stream)">SetSource</see> and 
            <see cref="P:ESRI.ArcGIS.Client.GraphicsLayer.Renderer">Renderer</see> Properties (Stream methodology). 
            NOTE: This assumes that default spatial coordinate information field names are used and the delimiter for 
            the CSV file is a comma.
            </para>
            <para>
            There are several methods to construct a Url for accessing data in a CSV layer. The example code in the 
            <see cref="T:ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer">CsvLayer</see> Class documentation shows how to access 
            a CSV file via on a web server and uses the 'http://' keyword to construct a Url. The example code in the 
            <b>CsvLayer.Url</b> Property documentation shows 
            how to access a CSV file as a resource on the local disk in a Visual Studio project using the 
            '[Visual_Studio_Project_Name]' and the 'component' keywords. Even more options are available such as constructing 
            a Url using the 'file://' or 'pack://' keywords. The development platform you are coding in will determine which 
            style of Url is appropriate. See the documentation for your particular development platform to decide which type 
            of string can be used in the the Url construction.
            </para>
            </remarks>
            <example>
            <para>
            <b>How to use:</b>
            </para>
            <para>
            When the application loads a CsvLayer will automatically be added to the Map (it was specified in XAML). 
            Click the Button to add another CsvLayer to the Map (it will be added via code-behind). The ID of each 
            layer will displayed in the TextBox. NOTE: the CSV files are accessed via Resource files on disk in the 
            Visual Studio project rather that an http:// web service.
            </para>
            <para>
            The XAML code in this example is used in conjunction with the code-behind (C# or VB.NET) to demonstrate
            the functionality.
            </para>
            <para>
            SPECIAL INSTRUCTIONS: The name of the sample Visual Studio project in this code example is "TestProject".
            Additionally a folder named "myFolder" was added to "TestProject". Place the "US_Cities_Top_5.csv" and 
            the "US_Cities_6_to_10.csv" files in the "myFolder" location. Make sure that the for the Properties of the 
            "US_Cities_Top_5.csv" and "US_Cities_6_to_10.csv" files that the 'Build Action' is set to 'Resource'.
            </para>
            <para>
            <img border="0" alt="Adding the US_Cities_Top_5.csv and US_Cities_6_to_10.csv files as a Resources to the Visual Studio Proect named 'TestProject' in the 'myFolder' location." src="C:\ArcGIS\dotNET\API SDK\Main\ArcGISSilverlightSDK\LibraryReference\images\Client.ToolkitDataSources.CsvLayer.Url1.png"/>
            </para>
            <para>
            The following is an example of the ASCII contents for the file named US_Cities_Top_5.csv:<br/>
            ID,Lat,Long,CityName,Population<br/>
            1,40.714,-74.006,New York City,8244910<br/>
            2,34.0522,-118.244,Los Angeles,3819702<br/>
            3,41.878,-87.636,Chicago,2708120<br/>
            4,29.763,-95.363,Houston,2099451<br/>
            5,39.952,-75.168,Philadelphia,1526006<br/>
            </para>
            <para>
            The following is an example of the ASCII contents for the file named US_Cities_6_to_10.csv:<br/>
            ID,Lat,Long,CityName,Population<br/>
            6,29.423,-98.493,San Antonio,1327407<br/>
            7,32.715,-117.156,San Diego,1326179<br/>
            8,32.782,-96.815,Dallas,1223229<br/>
            9,37.228,-119.228,San Jose,945942<br/>
            10,30.331,-81.655,Jacksonville,821784<br/>
            </para>
            <para>
            The following screen shot corresponds to the code example in this page.
            </para>
            <para>
            <img border="0" alt="Adding a CsvLayer in XAML and code-behind when the CSV files are resources in the Visual Studio project." src="C:\ArcGIS\dotNET\API SDK\Main\ArcGISSilverlightSDK\LibraryReference\images\Client.ToolkitDataSources.CsvLayer.Url.png"/>
            </para>
            <code title="Example XAML1" description="" lang="XAML">
            &lt;Grid x:Name="LayoutRoot" &gt;
              
              &lt;!-- Add local Resources to define a SimpleRender to display aqua diamonds as a SimpleMarkerSymbol 
              for the CsvLayer. --&gt;
              &lt;Grid.Resources&gt;
                &lt;esri:SimpleRenderer x:Key="myRenderer"&gt;
                  &lt;esri:SimpleRenderer.Symbol&gt;
                    &lt;esri:SimpleMarkerSymbol Color="Red" Size="12" Style="Circle" /&gt;
                  &lt;/esri:SimpleRenderer.Symbol&gt;
                &lt;/esri:SimpleRenderer&gt;
              &lt;/Grid.Resources&gt;
              
              &lt;!-- Add a Map Control to the application. Set the Extent to North America. --&gt;
              &lt;esri:Map x:Name="Map1" HorizontalAlignment="Left" VerticalAlignment="Top" 
                    Margin="0,238,0,0" Height="350" Width="415" Extent="-15219969,2609636,-6232883,6485365"&gt;
              
                &lt;!-- Add a backdrop ArcGISTiledMapServiceLayer. --&gt;
                &lt;esri:ArcGISTiledMapServiceLayer  ID="World_Topo_Map" 
                      Url="http://services.arcgisonline.com/arcgis/rest/services/world_topo_map/MapServer" /&gt;
                
                &lt;!-- Add a CsvLayer. The renderer symbology will be based upon the local static resource defined above.
                     VERY IMPORTANT: 
                     Replace the first parameter argument of the Url with the correct string to the location of the CSV 
                     file relative to your test project. In this example the Visual Studio project name is: "TestProject".
                     Additionally, a folder was added to "TestProject" called "myFolder" and this is where the 
                     US_Cities_Top_5.csv file is located. Finally, make sure that the for the Properties of the 
                     US_Cities_Top_5.csv file that the 'Build Action' is set to 'Resource'.
                --&gt;
                &lt;esri:CsvLayer ID="US_Cities_Top_5" Url="/TestProject;component/myFolder/US_Cities_Top_5.csv"
                      Renderer="{StaticResource myRenderer}" Initialized="CsvLayer_Initialized"/&gt;
              &lt;/esri:Map&gt;
              
              &lt;!-- Add a Button that will allow the user to add another CsvLayer via code-behind. --&gt;
              &lt;Button Name="Button1" Height="23" HorizontalAlignment="Left" Margin="0,209,0,0"  VerticalAlignment="Top" 
                      Width="706" Content="Add another CsvLayer (via code-behind) for the specified Url."
                      Click="Button1_Click" /&gt;
              
              &lt;!-- TextBox to display information about about the CsvLayerLayers added to the Map. --&gt;
              &lt;TextBox Height="350" HorizontalAlignment="Left" Margin="421,238,0,0" Name="TextBox1" VerticalAlignment="Top" 
                       Width="285" /&gt;
              
              &lt;!-- Provide the instructions on how to use the sample code. --&gt;
              &lt;TextBlock Height="174" HorizontalAlignment="Left" Name="TextBlock1" VerticalAlignment="Top" Width="788" 
                         TextWrapping="Wrap" Text="When the application loads a CsvLayer will automatically be added 
                         to the Map (it was specified in XAML). Click the Button to add another CsvLayer to the Map 
                         (it will be added via code-behind). The ID of each layer will displayed in the TextBox. 
                         NOTE: the CSV files are accessed via Resource files on disk in the Visual Studio project 
                         rather that an http:// web service." /&gt;
            &lt;/Grid&gt;
            </code>
            <code title="Example CS1" description="" lang="CS">
            private void CsvLayer_Initialized(object sender, System.EventArgs e)
            {
              // This function will execute as a result of the CsvLayer that was defined in XAML being Initialized.
              
              // Get the CsvLayer.
              ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer myCsvLayer = (ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer)sender;
              
              // Get the ID of the CsvLayer.
              string myID = myCsvLayer.ID;
              
              // Create a StringBuilder object to hold information about the CsvLayer and add some useful information to it.
              System.Text.StringBuilder myStringBuilder = new System.Text.StringBuilder();
              myStringBuilder.Append("The 1st CsvLayer was" + Environment.NewLine);
              myStringBuilder.Append("added via XAML and it's ID is: " + Environment.NewLine);
              myStringBuilder.Append(myID);
              
              // Display the results of the StringBuilder text to the user.
              TextBox1.Text = myStringBuilder.ToString();
            }
            
            private void Button1_Click(object sender, System.Windows.RoutedEventArgs e)
            {
              // This function executes as a result of the user clicking the Button. It adds a CsvLayer using code-behind.
              
              // Create a CsvLayer. 
              ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer myCsvLayer2 = new ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer();
              
              // Set the Url of the CsvLayer to a public service. 
              // VERY IMPORTANT: 
              // Replace the first parameter argument of the Url with the correct string to the location of the CSV 
              // file relative to your test project. In this example the Visual Studio project name is: "TestProject".
              // Additionally, a folder was added to "TestProject" called "myFolder" and this is where the US_Cities_6_to_10.csv 
              // file is located. Finally, make sure that the for the Properties of the US_Cities_6_to_10.csv file that the 
              // 'Build Action' is set to 'Resource'.
              myCsvLayer2.Url = "/TestProject;component/myFolder/US_Cities_6_to_10.csv";
              
              // Set the ID of the CsvLayer.
              myCsvLayer2.ID = "US_Cities_6_to_10";
              
              // Create a SimpleMarkerSymbol (a purple diamond) for the CsvLayer that will be added.
              ESRI.ArcGIS.Client.Symbols.SimpleMarkerSymbol theSimpleMarkerSymbol = new ESRI.ArcGIS.Client.Symbols.SimpleMarkerSymbol();
              theSimpleMarkerSymbol.Color = new System.Windows.Media.SolidColorBrush(System.Windows.Media.Colors.Purple);
              theSimpleMarkerSymbol.Size = 12;
              theSimpleMarkerSymbol.Style = ESRI.ArcGIS.Client.Symbols.SimpleMarkerSymbol.SimpleMarkerStyle.Diamond;
              
              // Define a SimpleRenderer and set the Symbol to the SimpleMarkerSymbol.
              ESRI.ArcGIS.Client.SimpleRenderer theSimpleRenderer = new ESRI.ArcGIS.Client.SimpleRenderer();
              theSimpleRenderer.Symbol = theSimpleMarkerSymbol;
              
              // Define the Renderer for the CsvLayer.
              myCsvLayer2.Renderer = theSimpleRenderer;
              
              // Wire-up the Initialized Event of the CsvLayer. Note how a different Initilized Event is being used verses 
              // the one defined in XAML. They could share the same Initialized Event but we created two seperate ones 
              // for demonstration purposes.
              myCsvLayer2.Initialized += CsvLayer_Initialized2;
              
              // Add the CsvLayer to the Map.
              Map1.Layers.Add(myCsvLayer2);
            }
            
            private void CsvLayer_Initialized2(object sender, EventArgs e)
            {
              // This function will execute as a result of the CsvLayer that was defined in code-behind being Initialized.
              
              // Get the CsvLayer.
              ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer myCsvLayer2 = (ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer)sender;
              
              // Get the ID of the CsvLayer.
              string myID2 = myCsvLayer2.ID;
              
              // Create a StringBuilder object to hold information about the CsvLayer and add some useful information to it.
              System.Text.StringBuilder myStringBuilder = new System.Text.StringBuilder();
              myStringBuilder.Append(TextBox1.Text + Environment.NewLine);
              myStringBuilder.Append(Environment.NewLine);
              myStringBuilder.Append("The 2nd CsvLayer was" + Environment.NewLine);
              myStringBuilder.Append("added via code-behind and it's ID is: " + Environment.NewLine);
              myStringBuilder.Append(myID2);
              
              // Display the results of the StringBuilder text to the user.
              TextBox1.Text = myStringBuilder.ToString();
            }
            </code>
            <code title="Example VB1" description="" lang="VB.NET">
            Private Sub CsvLayer_Initialized(sender As System.Object, e As System.EventArgs)
              
              ' This function will execute as a result of the CsvLayer that was defined in XAML being Initialized.
              
              ' Get the CsvLayer.
              Dim myCsvLayer As ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer = CType(sender, ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer)
              
              ' Get the ID of the CsvLayer.
              Dim myID As String = myCsvLayer.ID
              
              ' Create a StringBuilder object to hold information about the CsvLayer and add some useful information to it.
              Dim myStringBuilder As New Text.StringBuilder
              myStringBuilder.Append("The 1st CsvLayer was" + vbCrLf)
              myStringBuilder.Append("added via XAML and it's ID is: " + vbCrLf)
              myStringBuilder.Append(myID)
              
              ' Display the results of the StringBuilder text to the user.
              TextBox1.Text = myStringBuilder.ToString
              
            End Sub
            
            Private Sub Button1_Click(sender As System.Object, e As System.Windows.RoutedEventArgs)
              
              ' This function executes as a result of the user clicking the Button. It adds a CsvLayer using code-behind.
              
              ' Create a CsvLayer. 
              Dim myCsvLayer2 As ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer = New ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer
              
              ' Set the Url of the CsvLayer to a public service. 
              ' VERY IMPORTANT: 
              ' Replace the first parameter argument of the Url with the correct string to the location of the CSV 
              ' file relative to your test project. In this example the Visual Studio project name is: "TestProject".
              ' Additionally, a folder was added to "TestProject" called "myFolder" and this is where the US_Cities_6_to_10.csv 
              ' file is located. Finally, make sure that the for the Properties of the US_Cities_6_to_10.csv file that the 
              ' 'Build Action' is set to 'Resource'.
              myCsvLayer2.Url = "/TestProject;component/myFolder/US_Cities_6_to_10.csv"
              
              ' Set the ID of the CsvLayer.
              myCsvLayer2.ID = "US_Cities_6_to_10"
              
              ' Create a SimpleMarkerSymbol (a purple diamond) for the CsvLayer that will be added.
              Dim theSimpleMarkerSymbol As ESRI.ArcGIS.Client.Symbols.SimpleMarkerSymbol = New ESRI.ArcGIS.Client.Symbols.SimpleMarkerSymbol
              theSimpleMarkerSymbol.Color = New System.Windows.Media.SolidColorBrush(System.Windows.Media.Colors.Green)
              theSimpleMarkerSymbol.Size = 12
              theSimpleMarkerSymbol.Style = ESRI.ArcGIS.Client.Symbols.SimpleMarkerSymbol.SimpleMarkerStyle.Circle
              
              ' Define a SimpleRenderer and set the Symbol to the SimpleMarkerSymbol.
              Dim theSimpleRenderer As ESRI.ArcGIS.Client.SimpleRenderer = New ESRI.ArcGIS.Client.SimpleRenderer
              theSimpleRenderer.Symbol = theSimpleMarkerSymbol
              
              ' Define the Renderer for the CsvLayer.
              myCsvLayer2.Renderer = theSimpleRenderer
              
              ' Wire-up the Initialized Event of the CsvLayer. Note how a different Initilized Event is being used verses 
              ' the one defined in XAML. They could share the same Initialized Event but we created two seperate ones 
              ' for demonstration purposes.
              AddHandler myCsvLayer2.Initialized, AddressOf CsvLayer_Initialized2
              
              ' Add the CsvLayer to the Map.
              Map1.Layers.Add(myCsvLayer2)
              
            End Sub
            
            Private Sub CsvLayer_Initialized2(sender As Object, e As EventArgs)
              
              ' This function will execute as a result of the CsvLayer that was defined in code-behind being Initialized.
              
              ' Get the CsvLayer.
              Dim myCsvLayer2 As ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer = CType(sender, ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer)
              
              ' Get the ID of the CsvLayer.
              Dim myID2 As String = myCsvLayer2.ID
              
              ' Create a StringBuilder object to hold information about the CsvLayer and add some useful information to it.
              Dim myStringBuilder As New Text.StringBuilder
              myStringBuilder.Append(TextBox1.Text + vbCrLf)
              myStringBuilder.Append(vbCrLf)
              myStringBuilder.Append("The 2nd CsvLayer was" + vbCrLf)
              myStringBuilder.Append("added via code-behind and it's ID is: " + vbCrLf)
              myStringBuilder.Append(myID2)
              
              ' Display the results of the StringBuilder text to the user.
              TextBox1.Text = myStringBuilder.ToString
              
            End Sub
            </code>
            </example>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer.SourceSpatialReference">
            <summary>
            The spatial reference of the CSV data.
            </summary>
            <remarks>
            <para>
            Unless specified otherwise in the <b>SouceSpatialReference</b> Property, it is assumed that the 
            <see cref="T:ESRI.ArcGIS.Client.Geometry.SpatialReference">SpatialReference</see> of the CsvLayer 
            has a WKID value of 4326.
            </para>
            </remarks>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer.ProxyUrl">
            <summary>
            The proxy url location.
            </summary>
            <remarks>
            <para>
            Although ArcGIS Server is not required to host a CSV file web service you may experience the similar hosting 
            issues of accessing the web service as described in the ArcGIS Resource Center blog entitled 
            <a href="http://blogs.esri.com/esri/arcgis/2009/08/24/troubleshooting-blank-layers/">Troubleshooting blank layers</a>. 
            Specifically, you may need to make sure that a correct 
            <a href="http://msdn.microsoft.com/EN-US/LIBRARY/CC197955(VS.95).ASPX" target="_blank">cilentaccesspolicy.xml or crossdomain.xml</a> 
            file is in place on the web servers root. If a clientaccesspolicy.xml or crossdomainpolicy.xml file cannot be 
            used on your web server for situations like 
            <a href="http://resources.arcgis.com/en/help/silverlight-api/concepts/index.html#/Secure_services/016600000022000000/">secure services</a> 
            you may need to use a 
            <a href="http://resources.arcgis.com/en/help/silverlight-api/concepts/0166/other/SLProxyPage.zip">proxy page</a> 
            on your web server and make use of the <b>ProxyUrl</b> Property.
            </para>
            </remarks>
        </member>
        <member name="T:ESRI.ArcGIS.Client.Toolkit.DataSources.CsvLayer.FieldCollection">
            <summary>
            Holds a collection of <see cref="T:ESRI.ArcGIS.Client.Field"/>.
            </summary>
        </member>
        <member name="T:ESRI.ArcGIS.Client.Toolkit.DataSources.GeoRssLayer">
            <summary>
            GeoRSS Layer.
            </summary>
            <remarks>
            <para>
            Only <a href="http://www.georss.org/simple">GeoRSS-simple</a> feeds are supported.
            Geometries are returned in Geographic WGS84. If you are displaying the feed
            on top of a map in a different projection, they must be reprojected manually 
            when the graphics collection gets features added.
            </para>
            <para>
            The graphic will not have a symbol associated with them. You should specify
            a renderer on this layer, or manually assign symbols to the graphics when
            the graphics collection gets features added.
            </para>
            <para>
            Recent earthquake's greater than M2.5 with map tips:<br/>
            <code Lang="XAML">
            &lt;esri:GeoRssLayer Source="http://earthquake.usgs.gov/earthquakes/catalogs/1day-M2.5.xml" &gt;
              &lt;esri:GeoRssLayer.Renderer&gt;
                &lt;esri:SimpleRenderer Brush="Red" /&gt;
              &lt;/esri:GeoRssLayer.Renderer&gt;
              &lt;esri:GeoRssLayer.MapTip&gt;
                &lt;Border Padding="5" Background="White" esri:GraphicsLayer.MapTipHideDelay="0:0:0.5"&gt;
                  &lt;StackPanel&gt;
                    &lt;TextBlock Text="{Binding [Title]}" FontWeight="Bold" FontSize="12" /&gt;
                    &lt;TextBlock Text="{Binding [Summary]}" FontSize="10" /&gt;
                    &lt;HyperlinkButton Content="Link" NavigateUri="{Binding [Link]}" Opacity=".5" FontSize="10" TargetName="_blank" /&gt;
                  &lt;/StackPanel&gt;
                &lt;/Border&gt;
              &lt;/esri:GeoRssLayer.MapTip&gt;
            &lt;/esri:GeoRssLayer&gt;
            </code>
            </para>
            <para>
            If you require a proxy, simply prefix the layer URI with a proxy prefix:<br/>
            <code Lang="XAML">
            &lt;esri:GeoRssLayer Source="../proxy.ashx?url=http://earthquake.usgs.gov/earthquakes/catalogs/1day-M2.5.xml" /&gt;
            </code>
            </para>
            <para>
            The following attributes will be associated with each graphic:
            </para>
            <list type="bullet">
            	<item>Title (<see cref="T:System.String"/>)</item>
            	<item>Summary (<see cref="T:System.String"/>)</item> 
            	<item>PublishDate (<see cref="T:System.DateTime"/>)</item>
            	<item>Id (<see cref="T:System.String"/>)</item>
            	<item>Link (<see cref="T:System.Uri"/>)</item>
            	<item>FeedItem (<see cref="T:System.ServiceModel.Syndication.SyndicationItem"/>)</item>
            </list>
            <para>
            Optionally, if the item is using any of the simple-georss extensions,
            these will also be included:
            </para>
            <list type="bullet">
            	<item>elev (<see cref="T:System.Double"/>)</item>
            	<item>floor (<see cref="T:System.Int32"/>)</item>
            	<item>radius (<see cref="T:System.Double"/>)</item>
            	<item>featuretypetag (<see cref="T:System.String"/>)</item> 
            	<item>relationshiptag (<see cref="T:System.String"/>)</item>
            	<item>featurename (<see cref="T:System.String"/>)</item>
            </list>
            <para>
            The Graphic's <see cref="P:ESRI.ArcGIS.Client.Graphic.TimeExtent"/> property 
            will be set to a time instance matching the PublishDate.
            </para>
            </remarks>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.GeoRssLayer.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:ESRI.ArcGIS.Client.Toolkit.DataSources.GeoRssLayer"/> class.
            </summary>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.GeoRssLayer.Initialize">
            <summary>
            Initializes the resource.
            </summary>
            <remarks>
            	<para>Override this method if your resource requires asyncronous requests to initialize,
            and call the base method when initialization is completed.</para>
            	<para>Upon completion of initialization, check the <see cref="P:ESRI.ArcGIS.Client.Layer.InitializationFailure"/> for any possible errors.</para>
            </remarks>
            <seealso cref="E:ESRI.ArcGIS.Client.Layer.Initialized"/>
            <seealso cref="P:ESRI.ArcGIS.Client.Layer.InitializationFailure"/>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.GeoRssLayer.OnGraphicsSourceChanged(System.Collections.Generic.IEnumerable{ESRI.ArcGIS.Client.Graphic},System.Collections.Generic.IEnumerable{ESRI.ArcGIS.Client.Graphic})">
            <summary>
            Called when the GraphicsSource property changes.
            </summary>
            <param name="oldValue">Old value of the GraphicsSource property.</param>
            <param name="newValue">New value of the GraphicsSource property.</param>
            <exception cref="T:System.InvalidOperationException">Thrown when <see cref="P:ESRI.ArcGIS.Client.GraphicsLayer.GraphicsSource"/>property is changed on a <see cref="T:ESRI.ArcGIS.Client.Toolkit.DataSources.GeoRssLayer"/>.</exception>
        </member>
        <member name="F:ESRI.ArcGIS.Client.Toolkit.DataSources.GeoRssLayer.SourceProperty">
            <summary>
            Identifies the <see cref="P:ESRI.ArcGIS.Client.Toolkit.DataSources.GeoRssLayer.Source"/> dependency property.
            </summary>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.GeoRssLayer.Update">
            <summary>
            Reloads the RSS feed from the endpoint.
            </summary>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.GeoRssLayer.Source">
            <summary>
            Gets or sets the URI for the RSS feed.
            </summary>
        </member>
        <member name="T:ESRI.ArcGIS.Client.Toolkit.DataSources.HeatMapLayer">
            <summary>
            Heat Map layer
            </summary>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.HeatMapLayer.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:ESRI.ArcGIS.Client.Toolkit.DataSources.HeatMapLayer"/> class.
            </summary>
        </member>
        <member name="F:ESRI.ArcGIS.Client.Toolkit.DataSources.HeatMapLayer.IntensityProperty">
            <summary>
            Identifies the <see cref="P:ESRI.ArcGIS.Client.Toolkit.DataSources.HeatMapLayer.Intensity"/> dependency property.
            </summary>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.HeatMapLayer.OnIntensityPropertyChanged(System.Windows.DependencyObject,System.Windows.DependencyPropertyChangedEventArgs)">
            <summary>
            IntervalProperty property changed handler. 
            </summary>
            <param name="d">HeatMapLayer that changed its Interval.</param>
            <param name="e">DependencyPropertyChangedEventArgs.</param> 
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.HeatMapLayer.heatMapPoints_CollectionChanged(System.Object,System.Collections.Specialized.NotifyCollectionChangedEventArgs)">
            <summary>
            Handles the CollectionChanged event of the heatMapPoints control.
            </summary>
            <param name="sender">The source of the event.</param>
            <param name="e">The <see cref="T:System.Collections.Specialized.NotifyCollectionChangedEventArgs"/> instance containing the event data.</param>
        </member>
        <member name="F:ESRI.ArcGIS.Client.Toolkit.DataSources.HeatMapLayer.GradientProperty">
            <summary>
            Identifies the <see cref="P:ESRI.ArcGIS.Client.Toolkit.DataSources.HeatMapLayer.Gradient"/> dependency property.
            </summary>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.HeatMapLayer.OnGradientPropertyChanged(System.Windows.DependencyObject,System.Windows.DependencyPropertyChangedEventArgs)">
            <summary>
            GradientProperty property changed handler. 
            </summary>
            <param name="d">HeatMapLayer that changed its Gradient.</param>
            <param name="e">DependencyPropertyChangedEventArgs.</param> 
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.HeatMapLayer.GetSource(ESRI.ArcGIS.Client.Geometry.Envelope,System.Int32,System.Int32,ESRI.ArcGIS.Client.DynamicLayer.OnImageComplete)">
            <summary>
            Gets the source image to display in the dynamic layer. Override this to generate
            or modify images.
            </summary>
            <param name="extent">The extent of the image being requested.</param>
            <param name="width">The width of the image being requested.</param>
            <param name="height">The height of the image being requested.</param>
            <param name="onComplete">The method to call when the image is ready.</param>
            <seealso cref="M:ESRI.ArcGIS.Client.DynamicLayer.OnProgress(System.Int32)"/>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.HeatMapLayer.Cancel">
            <summary>
            Stops loading of any pending images
            </summary>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.HeatMapLayer.renderThread_DoWork(System.Object,System.ComponentModel.DoWorkEventArgs)">
            <summary>
            Handles the DoWork event of the renderThread control. This is where we
            render the heatmap outside the UI thread.
            </summary>
            <param name="sender">The source of the event.</param>
            <param name="e">The <see cref="T:System.ComponentModel.DoWorkEventArgs"/> instance 
            containing the event data.</param>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.HeatMapLayer.renderThread_RunWorkerCompleted(System.Object,System.ComponentModel.RunWorkerCompletedEventArgs)">
            <summary>
            Handles the RunWorkerCompleted event of the renderThread control.
            </summary>
            <param name="sender">The source of the event.</param>
            <param name="e">The <see cref="T:System.ComponentModel.RunWorkerCompletedEventArgs"/> instance containing the event data.</param>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.HeatMapLayer.renderThread_ProgressChanged(System.Object,System.ComponentModel.ProgressChangedEventArgs)">
            <summary>
            Handles the ProgressChanged event of the renderThread control and fires the layer progress event.
            </summary>
            <param name="sender">The source of the event.</param>
            <param name="e">The <see cref="T:System.ComponentModel.ProgressChangedEventArgs"/> instance containing the event data.</param>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.HeatMapLayer.InterpolateColor(System.Single,System.Collections.Generic.List{ESRI.ArcGIS.Client.Toolkit.DataSources.HeatMapLayer.ThreadSafeGradientStop})">
            <summary>
            Lienarly interpolates a color from a list of colors.
            </summary>
            <param name="value">The value relative to the gradient stop offsets.</param>
            <param name="stops">The color stops sorted by the offset.</param>
            <returns></returns>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.HeatMapLayer.AddPoint(System.UInt16[],System.Int32,System.Int32,System.Int32,System.Int32[],System.Int32)">
            <summary>
            Adds a heat map point to the intensity matrix.
            </summary>
            <param name="distanceMatrix">The distance matrix.</param>
            <param name="size">The size of the distance matrix.</param>
            <param name="x">x.</param>
            <param name="y">y</param>
            <param name="intensityMap">The intensity map.</param>
            <param name="width">The width of the intensity map..</param>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.HeatMapLayer.CreateDistanceMatrix(System.Int32)">
            <summary>
            Creates the distance matrix.
            </summary>
            <param name="size">The size of the matrix (must be and odd number).</param>
            <returns></returns>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.HeatMapLayer.QueryLegendInfos(System.Action{ESRI.ArcGIS.Client.LayerLegendInfo},System.Action{System.Exception})">
            <summary>
            Queries for the legend infos of a layer.
            </summary>
            <remarks>
            The returned result is encapsulated in a <see cref="T:ESRI.ArcGIS.Client.LayerLegendInfo"/> object containing one legend item showing the heat map gradient.
            </remarks>
            <param name="callback">The method to call on completion.</param>
            <param name="errorCallback">The method to call in the event of an error.</param>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.HeatMapLayer.FullExtent">
            <summary>
            The full extent of the layer.
            </summary>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.HeatMapLayer.Intensity">
            <summary>
            Gets or sets the interval.
            </summary>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.HeatMapLayer.HeatMapPoints">
            <summary>
            Gets or sets the heat map points.
            </summary>
            <value>The heat map points.</value>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.HeatMapLayer.Gradient">
            <summary>
            Gets or sets the heat map gradient.
            </summary>
        </member>
        <member name="E:ESRI.ArcGIS.Client.Toolkit.DataSources.HeatMapLayer.LegendChanged">
            <summary>
            Occurs when the legend of the layer changed (i.e. when the the <see cref="P:ESRI.ArcGIS.Client.Toolkit.DataSources.HeatMapLayer.Gradient"/> changed).
            </summary>
        </member>
        <member name="T:ESRI.ArcGIS.Client.Toolkit.DataSources.PngEncoder">
            <summary>
            PngEncoder class courtesy of Joe Stegman and opmized by Nikola:
            http://blogs.msdn.com/nikola/archive/2009/03/04/silverlight-super-fast-dymanic-image-generation-code-revisited.aspx
            </summary>
        </member>
        <member name="T:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KMLStyle">
            <summary>
            Internal representation of a KML style element.
            </summary>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KMLStyle.CopyFrom(ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KMLStyle)">
            <summary>
            Copies a KML style object contents to another KML object.
            </summary>
            <param name="from">The source of the copy (contents copied to instance invoking this method).</param>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KMLStyle.StyleId">
            <summary>
            The unique id of the style. This is either the "id" of the Style node, the filename of an image if taken
            from a KMZ file generated by ArcGIS REST, or a unique GUID for styles that are encountered "in-line" for
            a point feature in order to link the feature to the style/icon for later processing.
            </summary>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KMLStyle.IconHref">
            <summary>
            The href to the icon image used for a point feature.
            </summary>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KMLStyle.IconHotspotX">
            <summary>
            The X coordinate for the location on the point image to anchor to the underlying geometry.
            </summary>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KMLStyle.IconHotspotY">
            <summary>
            The Y coordinate for the location on the point image to anchor to the underlying geometry.
            </summary>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KMLStyle.IconHotspotUnitsX">
            <summary>
            The unit type for the hotspot used to interpret the X value as pixels, fractions, etc.
            </summary>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KMLStyle.IconHotspotUnitsY">
            <summary>
            The unit type for the hotspot used to interpret the Y value as pixels, fractions, etc.
            </summary>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KMLStyle.IconHeading">
            <summary>
            The angle of rotation for the point image between 0 and 360.
            </summary>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KMLStyle.IconScale">
            <summary>
            The scale of the point image.
            </summary>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KMLStyle.IconImage">
            <summary>
            The bitmap image used to draw the point symbol.
            </summary>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KMLStyle.LineWidth">
            <summary>
            The width in pixels used to draw the line segment.
            </summary>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KMLStyle.LineColor">
            <summary>
            The color used to draw the line segment.
            </summary>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KMLStyle.PolyFill">
            <summary>
            If true the polygon will be filled with a color, if false it will not be filled.
            </summary>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KMLStyle.PolyOutline">
            <summary>
            If true the polygon outline will be drawn independently of the inside, if false it will not
            be drawn.
            </summary>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KMLStyle.PolyFillColor">
            <summary>
            The color used to fill the polygon.
            </summary>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KMLStyle.BalloonText">
            <summary>
            If a style contains a BalloonStyle which also contains a text node, then that value is stored here and
            then copied into the features' attributes collection using BalloonText as the key.
            </summary>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KMLStyle.ZipFile">
            <summary>
            If the image used by a style is defined in a downlooaded kmz document, then the kmz document is stored here.
            We can't just store the image since it doesn't go through the tread barrier.
            </summary>
        </member>
        <member name="T:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.SymbolDescriptor">
            <summary>
            Abstract base class used for each type of symbol descriptor.
            </summary>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.SymbolDescriptor.CreateSymbol">
            <summary>
            Method to create proper symbology for each feature type.
            </summary>
            <returns>A symbol defined by internal properties of the class.</returns>
        </member>
        <member name="T:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.PointSymbolDescriptor">
            <summary>
            Concrete class for point geometry symbols.
            </summary>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.PointSymbolDescriptor.CreateSymbol">
            <summary>
            Method to create proper symbology for each feature type.
            </summary>
            <returns>A symbol defined by internal properties of the class.</returns>
        </member>
        <member name="T:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.LineSymbolDescriptor">
            <summary>
            Concrete class for line geometry symbols.
            </summary>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.LineSymbolDescriptor.CreateSymbol">
            <summary>
            Method to create proper symbology for each feature type.
            </summary>
            <returns>A symbol defined by internal properties of the class.</returns>
        </member>
        <member name="T:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.PolygonSymbolDescriptor">
            <summary>
            Concrete class for polygon geometry symbols.
            </summary>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.PolygonSymbolDescriptor.CreateSymbol">
            <summary>
            Method to create proper symbology for each feature type.
            </summary>
            <returns>A symbol defined by internal properties of the class.</returns>
        </member>
        <member name="T:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.PlacemarkDescriptor">
            <summary>
            Metadata storage for each placemark, assigned by KML engine.
            </summary>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.PlacemarkDescriptor.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.PlacemarkDescriptor"/> class.
            </summary>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.PlacemarkDescriptor.Geometry">
            <summary>
            Information that defines the feature geometry and its location.
            </summary>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.PlacemarkDescriptor.Symbol">
            <summary>
            Information that defines the symbology of the feature.
            </summary>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.PlacemarkDescriptor.Attributes">
            <summary>
            Attributes associated with the feature.
            </summary>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.PlacemarkDescriptor.TimeExtent">
            <summary>
            Gets or sets the time extent associated with the feature.
            </summary>
            <value>
            The time extent.
            </value>
        </member>
        <member name="T:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.NetworkLinkControl">
            <summary>
            NetworkLinkControl infos
            </summary>
        </member>
        <member name="T:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.GroundOverlayDescriptor">
            <summary>
            Metadata storage for each ground overlay, assigned by KML engine.
            </summary>
        </member>
        <member name="T:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.FeatureDefinition">
            <summary>
            Metadata storage for all elements in a KML file.
            </summary>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.FeatureDefinition.#ctor(System.Uri)">
            <summary>
            Initializes a new instance of the <see cref="T:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.FeatureDefinition"/> class.
            </summary>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.FeatureDefinition.Clear">
            <summary>
            Clear all features. This is invoked by the KML engine so that it can cleanly process multiple
            KML files with each as a separate graphics layer.
            </summary>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.FeatureDefinition.AddPlacemark(ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.PlacemarkDescriptor)">
            <summary>
            Adds a placemark descriptor to the list.
            </summary>
            <param name="fd">Placemark description.</param>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.FeatureDefinition.AddStyle(System.String,ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KMLStyle)">
            <summary>
            Adds a KML style to the list.
            </summary>
            <param name="key">Unique key associated with the style, typically an id, filename or GUID.</param>
            <param name="style">Style description.</param>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.FeatureDefinition.AddContainer(ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.ContainerInfo)">
            <summary>
            Adds a container to the list.
            </summary>
            <param name="container">The container.</param>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.FeatureDefinition.AddGroundOverlay(ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.GroundOverlayDescriptor)">
            <summary>
            Adds a grounoaverlay to the list.
            </summary>
            <param name="fd">The groundoverlay descriptor.</param>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.FeatureDefinition.GetIconImage(System.String,System.Action{System.String})">
            <summary>
            Returns the bitmap image brush associated with the icon href for the point feature.
            </summary>
            <param name="IconHref">Value used to obtain image from remote server via HTTP or key for image dictionary.</param>
            <param name="onFailed">The on failed.</param>
            <returns>
            A bitmap image brush or null if not found.
            </returns>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.FeatureDefinition.CreateGraphics(ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlGraphicsLayer,System.Collections.Generic.IDictionary{System.String,System.Windows.Media.ImageBrush})">
            <summary>
            Creates graphic elements and adds them to the graphics layer.
            </summary>
            <param name="layer">Graphics layer that will have features added to it.</param>
            <param name="images">Dictionary of images coming from kmz content or from previous parsing</param>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.FeatureDefinition.CreateGroundOverlays(ESRI.ArcGIS.Client.ElementLayer,System.Collections.Generic.IDictionary{System.String,System.Windows.Media.ImageBrush},ESRI.ArcGIS.Client.Map)">
            <summary>
            Createsground overlays and adds them to the element layer.
            </summary>
            <param name="layer">Element layer that will have overlays added to it.</param>
            <param name="images">Dictionary of images coming from kmz content or from previous parsing</param>
            <param name="map">The map the KML layer belongs to (useful to know the SR) </param>
        </member>
        <member name="T:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlExtendedData">
            <summary>
            Stores an extended data definition for a KML feature.
            </summary>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlExtendedData.ToString">
            <summary>
            Returns a string representation of the object.
            </summary>
            <returns>Returns the value of the object instead of the type information.</returns>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlExtendedData.Name">
            <summary>
            The name of the extended data variable.
            </summary>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlExtendedData.DisplayName">
            <summary>
            The optional display name for the extended data variable.
            </summary>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlExtendedData.Value">
            <summary>
            The value of the extended data variable.
            </summary>
        </member>
        <member name="T:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlGraphicsLayer">
            <summary>
            KML GraphicsLayer subclass for allowing legend based on the styles
            </summary>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlGraphicsLayer.QueryLegendInfos(System.Action{ESRI.ArcGIS.Client.LayerLegendInfo},System.Action{System.Exception})">
            <summary>
            Queries for the legend infos of the layer.
            </summary>
            <remarks>
            The returned result is encapsulated in a <see cref="T:ESRI.ArcGIS.Client.LayerLegendInfo"/> object.
            </remarks>
            <param name="callback">The method to call on completion.</param>
            <param name="errorCallback">The method to call in the event of an error.</param>
        </member>
        <member name="T:ESRI.ArcGIS.Client.Toolkit.DataSources.KmlLayer">
            <summary>
            A <see cref="T:ESRI.ArcGIS.Client.GroupLayer">GroupLayer</see> based upon the 
            <a href="http://en.wikipedia.org/wiki/KML" target="_blank">Keyhole Markup Language</a> (KML) specification that targets 
            the Google Maps level of support.
            </summary>
            <remarks>
            <para>
            Enhanced functionality to support more KML elements was added in the 
            ArcGIS API for Silverlight.
            
            
             This brings the KML level of functionality very close to that of the KML specification used in 
            <a href="http://en.wikipedia.org/wiki/Google_maps" target="_blank">Google Maps</a>.
            </para>
            <para>
            KML is an XML tag based syntax that holds geographic information (geometric shapes, symbology, and attributes) in a 
            file with the .kml extension. The KmlLayer also support the KMZ specification which is essentially a set of zipped 
            KML files, folders, and other documents (e.g. images, icons, html documents, etc. ) into a single file with the .kmz 
            extension. To view the contents of a KMZ file, rename the file with the extension .zip and use a ZIP program to explode 
            the contents onto a hard drive location.
            </para>
            <para><big>KmlLayer is a GroupLayer</big></para>
            <para>
            The KmlLayer is of Type <see cref="T:ESRI.ArcGIS.Client.GroupLayer">GroupLayer</see> meaning that certain KML elements 
            are parsed out into individual Layers in a <see cref="T:ESRI.ArcGIS.Client.LayerCollection">LayerCollection</see>. 
            The following KML elements are parsed into the ArcGIS Layer types of:
            </para>
            <list type="table">
            <listheader><term>KML Element(s)</term><description>ArcGIS Layer Type</description></listheader>
            <item><term>&lt;Placemark&gt;&lt;Point&gt;</term><description><see cref="T:ESRI.ArcGIS.Client.GraphicsLayer">GraphicsLayer</see> based upon <see cref="T:ESRI.ArcGIS.Client.Geometry.MapPoint">MapPoint</see> Geometries</description></item>
            <item><term>&lt;Placemark&gt;&lt;LineString&gt;</term><description><see cref="T:ESRI.ArcGIS.Client.GraphicsLayer">GraphicsLayer</see> based upon <see cref="T:ESRI.ArcGIS.Client.Geometry.Polyline">Polyline</see> Geometries</description></item>
            <item><term>&lt;Placemark&gt;&lt;Polygon&gt;</term><description><see cref="T:ESRI.ArcGIS.Client.GraphicsLayer">GraphicsLayer</see> based upon <see cref="T:ESRI.ArcGIS.Client.Geometry.Polygon">Polygon</see> Geometries</description></item>
            <item><term>&lt;GroundOverlay&gt;</term><description><see cref="T:ESRI.ArcGIS.Client.ElementLayer">ElementLayer</see></description></item>
            </list>
            <para>
            <b>Note:</b> The KML elements of &lt;Folder&gt;, &lt;Document&gt;, and &lt;NetworkLink&gt; become child KmlLayers (which 
            can be recursive in nature depending on the KML/KMZ file) and are parsed into the ArcGIS Layer types noted in the prior table.
            Additionally, a KmlLayer can contain other KmlLayers (which again can be recursive). 
            </para>
            <para>
            Drilling into individual Layers and their subsequent atomic level Types of a KmlLayer GroupLayer is accomplished 
            via the <see cref="P:ESRI.ArcGIS.Client.GroupLayerBase.ChildLayers">KmlLayer.ChildLayers</see> Property. See the code 
            example in the <see cref="P:ESRI.ArcGIS.Client.Toolkit.DataSources.KmlLayer.Name">KmlLayer.Name</see> Property 
            documentation for one example of drilling into the KmlLayer GroupLayer to obtain detailed information (like: 
            Graphic Attributes, Graphic Symbology, Graphic Geometry, ElementLayer ElementType, ElementLayer Opacity, 
            ElementLayer Envelope, etc.) that may be useful in creating an application.
            </para>
            
            
            <para><big>Accessing KML/KMZ on the local hard drive</big></para>
            <para>
            Accessing a KmlLayer is unique in that ArcGIS Server is not required to view the geographic information on the client. 
            Since the KmlLayer is based upon a KML or KMZ file, all that is required is a web server to host the KML/KMZ file. 
            <b>NOTE:</b> ArcGIS Server is however the recommended server to host KML/KMZ files via geographic web services as 
            it generates KML/KMZ files natively as part of the web service publishing process from an ArcMap .mxd. 
            </para>
            <para>
            Developers who wish to test the KmlLayer functionality using KML/KMZ files locally on their 
            development machine have the following options:
            </para>
            <para><b>Option #1:</b> Developers can place the KML/KMZ file in the ClientBin directory of the test web site that is generated when creating a Silverlight application using Visual Studios built in web server (i.e. the directory that has the  path: ..\[APPLICATION_NAME].Web\ClientBin). This option is the easiest method for testing KML/KMZ files when there  is no web browser security issues because all of the KML/KMZ functionality is self contained. See the code example in the <see cref="P:ESRI.ArcGIS.Client.Toolkit.DataSources.KmlLayer.Url">KmlLayer.Url</see> Property for one common workflow example of Option #1.</para>
            <para><b>NOTE:</b> If the KML/KMZ file has hyperlinks (i.e. they begin with http://) to resources (such as other KML/KMZ files) to locations outside of your local network, <b>IT WILL BE REQUIRED</b> to use Option #2 for local testing of KML/KMZ files. Some common KML tags (or nested sub-tags) that can use external hyperlinks outside of your local network include the following: &lt;href&gt;, &lt;Style&gt;, &lt;Icon&gt;, &lt;IconStyle&gt;, &lt;StyleMap&gt;, &lt;NetworkLink&gt;, and &lt;styleUrl&gt;. Additionally, if you get a Security Exception or unhandled exception 4004 errors in Visual Studio during your Silverlight application debugging, you will most likely need to use Option #2 instead.</para>
            <para><b>Option #2:</b> If the developer has installed a web server on the same computer as Visual Studio (for example: Internet Information Server (IIS)), then they can place the KML/KMZ file in an application directory of their local web server (i.e. http://localhost). Using this option has the additional requirements of:</para>
            <list type="bullet"><item>Setting up the correct MIME type on the web server to handle KML/KMZ files</item><item>Adding a crossdomain.xml file to the root of the web server</item><item>Making use of a proxy to avoid Security Exception error messages</item></list>
            <para>See the code example in the <see cref="P:ESRI.ArcGIS.Client.Toolkit.DataSources.KmlLayer.ProxyUrl">KmlLayer.ProxyUrl</see> Property for one common workflow example of Option #2.</para>
            
            
            
            
            
            
            
            <para><big>Supported KML Tags</big></para>
            <para>
            The following table lists the KML elements supported by the KmlLayer class, and provides additional notes for elements that 
            are conditionally supported.
            </para>
            <list type="table">
            <listheader><term>Supported KML Element</term><description>Supportability Notes</description></listheader>
            <item>
              <term>&lt;altitudeMode&gt;</term>
              <description>Only 2D supported.</description>
            </item>
            <item>
              <term>&lt;atom:author&gt;</term>
              <description>The &lt;atom:author&gt; 'name' attribute is stored in the ESRI.ArcGIS.Client.Graphic as an 
              <see cref="P:ESRI.ArcGIS.Client.Graphic.Attributes">Attribute</see> (where the key = 'name' in the key/value 
              pairs of the IDictionary(Of String, Object)). When this value is defined on a container 
              (&lt;Folder&gt; or &lt;Document&gt;), all &lt;Placemark&gt;'s in the hierarchy inherits from this 
              value.</description>
            </item>
            <item>
              <term>&lt;atom:link&gt;</term>
              <description>The &lt;atom:link&gt; 'href' attribute is stored in the ESRI.ArcGIS.Client.Graphic as an 
              <see cref="P:ESRI.ArcGIS.Client.Graphic.Attributes">Attribute</see> (where the key = 'atomHRef' in the 
              key/value pairs of the IDictionary(Of String, Object)). When this value is defined on a container 
              (&lt;Folder&gt; or &lt;Document&gt;), all &lt;Placemark&gt;'s in the hierarchy inherits from this 
              value.</description>
            </item>
            <item>
              <term>&lt;atom:name&gt;</term>
              <description>The &lt;atom:name&gt; 'href' attribute is stored in the ESRI.ArcGIS.Client.Graphic as an 
              <see cref="P:ESRI.ArcGIS.Client.Graphic.Attributes">Attribute</see> (where the key = 'atomHRef' in the key/value 
              pairs of the IDictionary(Of String, Object)). When this value is defined on a container (&lt;Folder&gt; or 
              &lt;Document&gt;), all &lt;Placemark&gt;'s in the hierarchy inherits from this value.</description>
            </item>
            <item>
              <term>&lt;BalloonStyle&gt;</term>
              <description>For the &lt;BalloonStyle&gt;, the nested &lt;text&gt; tag information is stored in the 
              ESRI.ArcGIS.Client.Graphic as an <see cref="P:ESRI.ArcGIS.Client.Graphic.Attributes">Attribute</see> 
              (where the key = 'balloonText' in the key/value pairs of the IDictionary(Of String, Object)). NOTE: 
              Whatever is specified as information in the &lt;text &gt; tag is used, there is no entity replacement.</description>
            </item>
            <item>
              <term>&lt;color&gt;</term>
              <description>Includes #AABBGGRR and #BBGGRR.</description>
            </item>
            <item>
              <term>&lt;colorMode&gt;</term>
              <description>Random mode not supported.</description>
            </item>
            <item>
              <term>&lt;coordinates&gt;</term>
              <description></description>
            </item>
            <item>
              <term>&lt;Data&gt;</term>
              <description>Multiple &lt;Data&gt; tags can be nested within the &lt;ExtendedData&gt; tag. The &lt;ExtendedData&gt; 
              tag corresponds to a System.Collections.Generic.List(Of 
              <see cref="T:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlExtendedData">ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlExtendedData</see>).
              An &lt;ExtendedData&gt; tag is stored as a single key/value pair in the IDictionary(Of String, Object)) 
              of the <see cref="P:ESRI.ArcGIS.Client.Graphic.Attributes">Graphic.Attributes</see> Property (where the 
              key = 'extendedData' in the key/value pairs of the IDictionary(Of String, Object)). Each &lt;Data&gt; tag 
              holds three attributes: 'name', 'displayname', and 'value' and is stored as a KmlExtendedData object of the 
              System.Collections.Generic.List(Of ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlExtendedData). Thus, the 
              &lt;Data&gt; 'name' attribute maps to a KmlExtendedData.Name Property; the &lt;Data&gt; 'displayname' attribute 
              maps to the KmlExtendedData.DisplayName Property; and the &lt;Data&gt; 'value' attribute maps to the 
              KmlExtendedData.Value Property.</description>
            </item>
            <item>
              <term>&lt;description&gt;</term>
              <description>For the &lt;description&gt; tag the information is stored in the ESRI.ArcGIS.Client.Graphic as an 
              <see cref="P:ESRI.ArcGIS.Client.Graphic.Attributes">Attribute</see> (where the key = 'description' in the key/value 
              pairs of the IDictionary(Of String, Object)). NOTE: Whatever is specified as information in the &lt;description&gt; 
              tag is used, there is no entity replacement. The HTML content is allowed but is sanitized to protect from 
              cross-browser attacks; entity replacements of the form $[dataName] are unsupported.</description>
            </item>
            <item>
              <term>&lt;Document&gt;</term>
              <description>From v2.3, the &lt;Document&gt; tag becomes ESRI.ArcGIS.Client.GroupLayers.</description>
            </item>
            <item>
              <term>&lt;east&gt;</term>
              <description>Part of &lt;LatLonBox&gt;.</description>
            </item>
            <item>
              <term>&lt;ExtendedData&gt;</term>
              <description>Multiple &lt;Data&gt; tags can be nested within the &lt;ExtendedData&gt; tag. The &lt;ExtendedData&gt; 
              tag corresponds to a System.Collections.Generic.List(Of 
              <see cref="T:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlExtendedData">ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlExtendedData</see>).
              An &lt;ExtendedData&gt; tag is stored as a single key/value pair in the IDictionary(Of String, Object)) 
              of the <see cref="P:ESRI.ArcGIS.Client.Graphic.Attributes">Graphic.Attributes</see> Property (where the 
              key = 'extendedData' in the key/value pairs of the IDictionary(Of String, Object)). Each &lt;Data&gt; tag 
              holds three attributes: 'name', 'displayname', and 'value' and is stored as a KmlExtendedData object of the 
              System.Collections.Generic.List(Of ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlExtendedData). Thus, the 
              &lt;Data&gt; 'name' attribute maps to a KmlExtendedData.Name Property; the &lt;Data&gt; 'displayname' attribute 
              maps to the KmlExtendedData.DisplayName Property; and the &lt;Data&gt; 'value' attribute maps to the 
              KmlExtendedData.Value Property. No support for SchemaData.</description>
            </item>
            <item>
              <term>&lt;fill&gt;</term>
              <description></description>
            </item>
            <item>
              <term>&lt;Folder&gt;</term>
              <description>From v2.3, the &lt;Folder&gt; tag becomes ESRI.ArcGIS.Client.GroupLayers.</description>
            </item>
            <item>
              <term>&lt;GroundOverlay&gt;</term>
              <description>From v2.3, an ESRI.ArcGIS.Client.ElementLayer is created by &lt;Folder&gt; and &lt;Document&gt; tags 
              to contain all the &lt;GroundOverlay&gt; tags of the container. Nested tags of &lt;LatLongBox&gt;, &lt;rotation&gt;, 
              &lt;color&gt;, and &lt;icon&gt; are used.</description>
            </item>
            <item>
              <term>&lt;heading&gt;</term>
              <description>Supported when part of an &lt;IconStyle&gt; element for proper rotation of a point's image.</description>
            </item>
            <item>
              <term>&lt;hotSpot&gt;</term>
              <description>Supported for Symbol creation.</description>
            </item>
            <item>
              <term>&lt;href&gt;</term>
              <description></description>
            </item>
            <item>
              <term>&lt;Icon&gt;</term>
              <description>Only the 'href' element of this complex element is supported. Rotation and scaling are supported.</description>
            </item>
            <item>
              <term>&lt;IconStyle&gt;</term>
              <description></description>
            </item>
            <item>
              <term>&lt;innerBoundaryIs&gt;</term>
              <description>Only single interior ring supported.</description>
            </item>
            <item>
              <term>&lt;kml&gt;</term>
              <description>It's the root element of any KML document.</description>
            </item>
            <item>
              <term>&lt;LatLonBox&gt;</term>
              <description>Support for &lt;Placemark&gt; tags. Supported from v2.3 for &lt;GroundOverlay&gt; tags.</description>
            </item>
            <item>
              <term>&lt;LinearRing&gt;</term>
              <description>Supported, but only makes use of the &lt;coordinates&gt; sub element.</description>
            </item>
            <item>
              <term>&lt;LineString&gt;</term>
              <description>Supported, but only makes use of the &lt;coordinates&gt; sub element.</description>
            </item>
            <item>
              <term>&lt;LineStyle&gt;</term>
              <description></description>
            </item>
            <item>
              <term>&lt;Link&gt;</term>
              <description>Supported, but only makes use of the &lt;href&gt; sub element.</description>
            </item>
            <item>
              <term>&lt;MultiGeometry&gt;</term>
              <description>Rendered but displayed as separate features in left side panel.</description>
            </item>
            <item>
              <term>&lt;name&gt;</term>
              <description>For the &lt;name&gt; tag the information is stored in the ESRI.ArcGIS.Client.Graphic as an 
              <see cref="P:ESRI.ArcGIS.Client.Graphic.Attributes">Attribute</see> (where the key = 'name' in the key/value 
              pairs of the IDictionary(Of String, Object)). NOTE: Whatever is specified as information in the &lt;description&gt; 
              tag is used, there is no entity replacement.</description>
            </item>
            <item>
              <term>&lt;NetworkLink&gt;</term>
              <description>From v2.3 support for &lt;refreshInterval&gt; tag and 'OnInterval' RefreshMode. Becomes a 
              sub-layer in the ESRI.ArcGIS.Client.GroupLayer.</description>
            </item>
            <item>
              <term>&lt;NetworkLinkControl&gt;</term>
              <description>'MinRefreshPeriod' supported from v2.3.</description>
            </item>
            <item>
              <term>&lt;north&gt;</term>
              <description>Supported as part of &lt;LatLonBox&gt;.</description>
            </item>
            <item>
              <term>&lt;outerBoundaryIs&gt;</term>
              <description>Implicitly from &lt;LinearRing&gt; order.</description>
            </item>
            <item>
              <term>&lt;outline&gt;</term>
              <description></description>
            </item>
            <item>
              <term>&lt;Placemark&gt;</term>
              <description>Becomes an ESRI.ArcGIS.Client.Graphic in an ESRI.ArcGIS.Client.GraphicsLayer.</description>
            </item>
            <item>
              <term>&lt;Point&gt;</term>
              <description>Supported, but only makes use of the &lt;coordinates&gt; sub element.</description>
            </item>
            <item>
              <term>&lt;Polygon&gt;</term>
              <description>Supported, but only makes use of the &lt;OuterBoundaryIs&gt; and &lt;InnerBoundaryIs&gt; 
              sub elements.</description>
            </item>
            <item>
              <term>&lt;PolyStyle&gt;</term>
              <description>Makes use of the tags &lt;color&gt;, &lt;fill&gt;, and &lt;outline&gt;.</description>
            </item>
            <item>
              <term>&lt;refreshInterval&gt;</term>
              <description>Supported from v2.3.</description>
            </item>
            <item>
              <term>&lt;refreshMode&gt;</term>
              <description>'OnInterval' mode supported from v2.3.</description>
            </item>
            <item>
              <term>&lt;south&gt;</term>
              <description>Supported as part of &lt;LatLonBox&gt;.</description>
            </item>
            <item>
              <term>&lt;Style&gt;</term>
              <description>Supported, but only &lt;IconStyle&gt;, &lt;LineStyle&gt;, and &lt;PolyStyle&gt; 
              sub-elements are supported.</description>
            </item>
            <item>
              <term>&lt;StyleMap&gt;</term>
              <description>Only 'Normal' style supported. 'highlight' style not supported.</description>
            </item>
            <item>
              <term>&lt;text&gt;</term>
              <description></description>
            </item>
            <item>
              <term>&lt;value&gt;</term>
              <description>Replacement of $[geDirections] is not supported.</description>
            </item>
            <item>
              <term>&lt;visibility&gt;</term>
              <description>Visibility of containers (&lt;Folder&gt;/&lt;Document&gt;/&lt;NetworkLink&gt;) supported 
              from v2.3. Visibility of features not supported.</description>
            </item>
            <item>
              <term>&lt;west&gt;</term>
              <description>Supported as part of &lt;LatLonBox&gt;.</description>
            </item>
            <item>
              <term>&lt;width&gt;</term>
              <description></description>
            </item>
            </list>
            </remarks>
            <example>
            <para>
            <b>How to use:</b>
            </para>
            When the Map initially loads a KmlLayer (Earth Quakes in the last 7 days) will be added that was defined in 
            XAML. Click the button to add another KmlLayer (Volcanoes of the World) using code-behind logic.
            <para>
            </para>
            <para>
            The XAML code in this example is used in conjunction with the code-behind (C# or VB.NET) to demonstrate
            the functionality.
            </para>
            <para>
            The following screen shot corresponds to the code example in this page.
            </para>
            <para>
            <img border="0" alt="Adding KmlLayers to the Map using XAML and code-behind." src="C:\ArcGIS\dotNET\API SDK\Main\ArcGISSilverlightSDK\LibraryReference\images\Client.Toolkit.DataSources.KmlLayer.png"/>
            </para>
            <code title="Example XAML1" description="" lang="XAML">
            &lt;Grid x:Name="LayoutRoot"&gt;
            
              &lt;!-- Add a Map Control. Zoom to the Central Europe/Mediterranean area. --&gt;
              &lt;esri:Map Background="White" HorizontalAlignment="Left" Margin="0,171,0,0" Name="Map1" VerticalAlignment="Top" 
                        WrapAround="True" Height="419" Width="405" Extent="-692043,2479159,4226170,7567385"&gt;
                &lt;esri:Map.Layers&gt;
                  &lt;esri:LayerCollection&gt;
                              
                    &lt;!-- Add a background ArcGISTiledMapServiceLayer for visual reference. --&gt;
                    &lt;esri:ArcGISTiledMapServiceLayer 
                      Url="http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer" /&gt;
                      
                    &lt;!-- Add a KmlLayer that shows Earthquake occurrences over the last 7 days. Need to use a ProxyUrl. --&gt;
                    &lt;esri:KmlLayer ID="Earth Quakes" 
                                   Url="http://earthquake.usgs.gov/earthquakes/catalogs/eqs7day-age_src.kmz"
                                   ProxyUrl="http://serverapps.esri.com/SilverlightDemos/ProxyPage/proxy.ashx"&gt;
                    &lt;/esri:KmlLayer&gt;
                    
                  &lt;/esri:LayerCollection&gt;
                &lt;/esri:Map.Layers&gt;
              &lt;/esri:Map&gt;
                  
              &lt;!-- Add a Legend Control to show the symbology of the Layers in the Map. --&gt;
              &lt;esri:Legend HorizontalAlignment="Left" Margin="403,171,0,0" Name="Legend1" VerticalAlignment="Top" 
                           Height="419" Width="237" Map="{Binding ElementName=Map1}" 
                           ShowOnlyVisibleLayers="True" LayerItemsMode="Tree" /&gt;
                    
              &lt;!-- Add a button that has the Click event wired up. The button will add another KmlLayer via the code-behind. --&gt;
              &lt;Button Content="Add KmlLayer 'Volcanoes of the World' to the Map." Height="23" HorizontalAlignment="Left" 
                      Margin="0,144,0,0" Name="Button1" VerticalAlignment="Top" Width="640" Click="Button1_Click"/&gt;
              
              &lt;!-- Provide the instructions on how to use the sample code. --&gt;
              &lt;TextBlock Height="138" HorizontalAlignment="Left" Name="TextBlock1" VerticalAlignment="Top" Width="640" 
                 TextWrapping="Wrap" Text="When the Map initially loads a KmlLayer (Earth Quakes in the last 7 days) will 
                         be added that was defined in XAML. Click the button to add another KmlLayer (Volcanoes of the World)
                         using code-behind logic." /&gt;
              
            &lt;/Grid&gt;
            </code>
            <code title="Example CS1" description="" lang="CS">
            private void Button1_Click(object sender, System.Windows.RoutedEventArgs e)
            {
              // Add another KmlLayer to the Map.
              
              // Create a new KmlLayer object. 
              ESRI.ArcGIS.Client.Toolkit.DataSources.KmlLayer theKmlLayer = new ESRI.ArcGIS.Client.Toolkit.DataSources.KmlLayer();
              
              // Set the KmlLayer's ID.
              theKmlLayer.ID = "Volcanoes of the world";
              
              // Set the Url of the KmlLayer. Note the Url takes a Uri object!
              theKmlLayer.Url = new Uri("http://sites.google.com/site/geined13/tours/Volcanoes_of_the_World.kmz?attredirects=0&amp;d=1");
              
              // Need to use a ProxyUrl on the KmlLayer since the service is not hosted locally or on a local network.
              theKmlLayer.ProxyUrl = "http://serverapps.esri.com/SilverlightDemos/ProxyPage/proxy.ashx";
              
              // Add the KmlLayer to the Map. An automaic refresh of the Map and Legend Controls will occur.
              Map1.Layers.Add(theKmlLayer);
            }
            </code>
            <code title="Example VB1" description="" lang="VB.NET">
            Private Sub Button1_Click(sender As System.Object, e As System.Windows.RoutedEventArgs)
              
              ' Add another KmlLayer to the Map.
              
              ' Create a new KmlLayer object. 
              Dim theKmlLayer As New ESRI.ArcGIS.Client.Toolkit.DataSources.KmlLayer
              
              ' Set the KmlLayer's ID.
              theKmlLayer.ID = "Volcanoes of the world"
              
              ' Set the Url of the KmlLayer. Note the Url takes a Uri object!
              theKmlLayer.Url = New Uri("http://sites.google.com/site/geined13/tours/Volcanoes_of_the_World.kmz?attredirects=0&amp;d=1")
              
              ' Need to use a ProxyUrl on the KmlLayer since the service is not hosted locally or on a local network.
              theKmlLayer.ProxyUrl = "http://serverapps.esri.com/SilverlightDemos/ProxyPage/proxy.ashx"
              
              ' Add the KmlLayer to the Map. An automaic refresh of the Map and Legend Controls will occur.
              Map1.Layers.Add(theKmlLayer)
              
            End Sub
            </code>
            </example>
        </member>
        <member name="F:ESRI.ArcGIS.Client.Toolkit.DataSources.KmlLayer.ProjectionServiceProperty">
            <summary>
            Identifies the <see cref="P:ESRI.ArcGIS.Client.Toolkit.DataSources.KmlLayer.ProjectionService"/> dependency property.
            </summary>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.KmlLayer.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:ESRI.ArcGIS.Client.Toolkit.DataSources.KmlLayer"/> class.
            </summary>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.KmlLayer.#ctor(ESRI.ArcGIS.Client.Toolkit.DataSources.KmlLayer)">
            <summary>
            Initializes a new instance of the <see cref="T:ESRI.ArcGIS.Client.Toolkit.DataSources.KmlLayer"/> class which will be a child of another <see cref="T:ESRI.ArcGIS.Client.Toolkit.DataSources.KmlLayer"/>.
            </summary>
            <param name="parentLayer">The parent layer.</param>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.KmlLayer.OnMapChanged(ESRI.ArcGIS.Client.Map,ESRI.ArcGIS.Client.Map)">
            <summary>
            Override to know when a layer's <see cref="T:ESRI.ArcGIS.Client.Map"/> property changes.
            </summary>
            <param name="oldValue">Old map</param>
            <param name="newValue">New map</param>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.KmlLayer.Initialize">
            <summary>
            Initializes the resource.
            </summary>
            <seealso cref="E:ESRI.ArcGIS.Client.Layer.Initialized"/>
            <seealso cref="P:ESRI.ArcGIS.Client.Layer.InitializationFailure"/>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.KmlLayer.SetSource(System.IO.Stream)">
            <summary>
            Sets the KML stream source.
            </summary>
            <param name="stream">A stream to a KML or KMZ file.</param>
            <remarks>
            Use this method if you need to load KML from a local file or
            file stream.
            </remarks>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.KmlLayer.Refresh">
            <summary>
            Refreshes the KML layer by downloading and parsing the KML document.
            </summary>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.KmlLayer.ConditionalRefresh(ESRI.ArcGIS.Client.Geometry.Envelope)">
            <summary>
            If the region matches the map extent, download the URL immediatly
            else set the flag NeedRefreshOnRegion for further refresh
            </summary>
            <param name="region">The region.</param>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.KmlLayer.SetVisibilityByIDs(System.Collections.Generic.IEnumerable{System.Int32})">
            <summary>
             Set the folders visibility from an enumeration of Ids.
             These Ids are those used by the webmaps.
            </summary>
             <param name="IDs">Enumeration of visible folder ID.</param>
             <remarks>This method is mainly useful for the webmap serializer</remarks>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.KmlLayer.GenerateVisibilityIDs">
            <summary>
             Generate the IDs of the folder that are currently visible.
            </summary>
            <returns>The enumeration of visible folder IDs</returns>
             <remarks>This method is mainly useful for the webmap serializer</remarks>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.KmlLayer.DownloadContent(System.Uri)">
            <summary>
            Download content using URL. This method may be called recursively if the KML file contains
            a network link.
            </summary>
            <param name="url">Location of KML content.</param>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.KmlLayer.webclient_OpenReadCompleted(System.Object,System.Net.OpenReadCompletedEventArgs)">
            <summary>
            Event handler for when the KML file is completely downloaded. If the KML content contains a
            network link, then the linked content will be downloaded recursively. If no network link is
            detected, then the KML content is converted into a feature definition using the engine and
            eventually rendered as graphic g.
            </summary>
            <param name="sender">Sending object.</param>
            <param name="e">Stream containing KML content.</param>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.KmlLayer.GetKmzContents(ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.ZipFile)">
            <summary>
            Processes each file in the ZIP stream, storing images in a dictionary and load the KML contents
            into an XDocument.
            </summary>
            <param name="zipFile">Decompressed stream from KMZ.</param>
            <returns>XDocument containing KML content from the KMZ source.</returns>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.KmlLayer.InitRefreshTimer">
            <summary>
            Init the timer to refresh the layer
            </summary>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.KmlLayer.KmlLayer_PropertyChanged(System.Object,System.ComponentModel.PropertyChangedEventArgs)">
            <summary>
            Handles the PropertyChanged event of the KmlLayer.
            Loads and parses the KML source as soon as the layer is visible.
            </summary>
            <param name="sender">The source of the event.</param>
            <param name="e">The <see cref="T:System.ComponentModel.PropertyChangedEventArgs"/> instance containing the event data.</param>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.KmlLayer.SetResolutionRange">
            <summary>
            Sets the min and max resolution from the Region.
            If the layer is a networklink, the resolution is set on the layer itself
            If the layer is not a networklink, the resolution is set on the children that are not networklink.
            </summary>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.KmlLayer.QueryLegendInfos(System.Action{ESRI.ArcGIS.Client.LayerLegendInfo},System.Action{System.Exception})">
            <summary>
            Queries for the legend infos of the layer.
            </summary>
            <remarks>
            The returned result is encapsulated in a <see cref="T:ESRI.ArcGIS.Client.LayerLegendInfo"/> object.
            A group layer returns only one item describing the group layer (the legends of the sublayers are not returned by this method) 
            </remarks>
            <param name="callback">The method to call on completion.</param>
            <param name="errorCallback">The method to call in the event of an error (cant' happen with a group layer).</param>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.KmlLayer.Url">
            <summary>
            Gets or sets the Url to the KML document.
            </summary>
            <remarks>
            <para>
            Accessing a KmlLayer is unique in that ArcGIS Server is not required to view geographic information. Since 
            the KmlLayer is based upon a KML or KMZ file, all that is required is a web server to host the KML/KMZ file. 
            <b>NOTE:</b> ArcGIS Server has the ability to host geographic web services created in ArcMap as native 
            KML/KMZ files. 
            </para>
            <para>
            Developers who wish to test the KmlLayer functionality using KML/KMZ files locally on their 
            development machine have the followings options:
            </para>
            <para>
            <b>Option #1:</b> Developers can place the KML/KMZ file in the ClientBin directory of the test web site that 
            is generated when creating a Silverlight application using Visual Studios built in web server (i.e. the directory 
            that has the path: ..\[APPLICATION_NAME].Web\ClientBin). This option is the easiest method for testing KML/KMZ files 
            when there  is no web browser security issues because all of the KML/KMZ functionality is self contained. See the 
            code example in this document for one common workflow example for Option #1.
            </para>
            <para>
            <b>NOTE:</b> If the KML/KMZ file has hyperlinks (i.e. they begin with http://) to resources (such as other KML/KMZ 
            files) to locations outside of your local network, <b>IT WILL BE REQUIRED</b> to use Option #2 for local 
            testing of KML/KMZ files. Some common KML tags (or nested sub-tags) that can use external hyperlinks outside 
            of your local network include the following: &lt;href&gt;, &lt;Style&gt;, &lt;Icon&gt;, &lt;IconStyle&gt;, 
            &lt;StyleMap&gt;, &lt;NetworkLink&gt;, and &lt;styleUrl&gt;. Additionally, if you get a Security Exception 
            or unhandled exception 4004 errors in Visual Studio during your Silverlight application debugging, you will 
            most likely need to use Option #2 instead. 
            </para>
            <para>
            <b>Option #2:</b> If the developer has installed a web server on the same computer as Visual Studio (for example: 
            Internet Information Server (IIS)), then they can place the KML/KMZ file in an application directory of their 
            local web server (i.e. http://localhost).  Using this option has the additional requirements of: 
            </para>
            <list type="bullet">
            <item>Setting up the correct MIME type on the web server to handle KML/KMZ files</item>
            <item>Adding a crossdomain.xml file to the root of the web server</item>
            <item>Making use of a proxy to avoid Security Exception error messages</item>
            </list>
            <para> See the code example in the 
            <see cref="P:ESRI.ArcGIS.Client.Toolkit.DataSources.KmlLayer.ProxyUrl">KmlLayer.ProxyUrl</see> Property
            for one common workflow example of Option #2.
            </para>
            </remarks>
            <example>
            <para>
            The following steps show one example of how a developer could test a simple KML file (with no external 
            hyperlink dependencies) using Visual Studio’s built-in web server (Cassini):
            </para>
            <list type="bullet">
            <item>Launch Visual Studio 2010</item>
            <item>Choose <b>File</b> | <b>New Project</b> from the Visual Studio menus.</item>
            <item>
            In the <b>New Project</b> dialog, expand .NET Language of your choice (Visual Basic shown in this 
            example), click on the <b>Silverlight Template</b>, choose <b>Silverlight Application</b>, and specify the 
            following information in the textboxes: 
            <list type="bullet">
            <item>Name: <b>SilverlightApplication1</b></item>
            <item>Location: <b>C:\KML_Test\</b></item>
            <item>Solution name: <b>SilverlightApplication1</b></item>
            </list>
            See the following screen shot:<br/>
            <img border="0" alt="Choosing a Silverlight Application in Visual Studio." src="C:\ArcGIS\dotNET\API SDK\Main\ArcGISSilverlightSDK\LibraryReference\images\Client.Toolkit.DataSources.Url.VS_KML_Test_1.png"/>
            </item>
            <item>
            In the <b>New Silverlight Application</b> dialog, accept the defaults (make sure the <b>Host the Silverlight 
            application in a new Web site</b> is checked). This will use the Visual Studio built-in web server (Cassini) for 
            launching your Silverlight application (see the following screen shot):<br/>
            <img border="0" alt="Accepting the defaults in the New Silverlight Application dialog." src="C:\ArcGIS\dotNET\API SDK\Main\ArcGISSilverlightSDK\LibraryReference\images\Client.Toolkit.DataSources.Url.VS_KML_Test_2.png"/>
            </item>
            <item>Drag an ESRI Silverlight API <b>Map Control</b> onto the <b>MainPage.xaml</b> design surface.</item>
            <item>Add the following additional Reference to the Visual Studio Project: <b>ESRI.ArcGIS.Client.Toolkit.DataSources</b>.</item>
            <item>Replace the XAML code in the <b>MainPage.xaml</b> with the following:
            <code title="Example XAML1" description="" lang="XAML">
            &lt;UserControl x:Class="SilverlightApplication1.MainPage"
                         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                         xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
                         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
                         mc:Ignorable="d"
                         d:DesignHeight="300" d:DesignWidth="400" 
                         xmlns:esri="http://schemas.esri.com/arcgis/client/2009"&gt;
            
              &lt;Grid x:Name="LayoutRoot" Background="White"&gt;
                &lt;esri:Map Background="White" HorizontalAlignment="Left" Name="Map1" VerticalAlignment="Top"
                      WrapAround="True" Height="276" Width="376" Margin="12,12,0,0"&gt;
                  &lt;esri:Map.Layers&gt;
                    &lt;esri:LayerCollection&gt;
                      &lt;esri:ArcGISTiledMapServiceLayer 
                            Url="http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer" /&gt;
                      &lt;esri:KmlLayer Url="Test.kml"/&gt;
                    &lt;/esri:LayerCollection&gt;
                  &lt;/esri:Map.Layers&gt;
                &lt;/esri:Map&gt;
              &lt;/Grid&gt;
            &lt;/UserControl&gt;
            </code>
            </item>
            <item>
            Choose <b>Build</b> | <b>Build Solution</b> from the Visual Studio menus (you should not have any 
            compiler Errors/Warnings).
            </item>
            <item>
            Using the text editor application, <b>Notepad</b>, copy the following KML syntax and save the file as 
            <b>C:\KML_Test\SilverlightApplication1\SilverlightApplication1.Web\ClientBin\Test.kml</b> (this is 
            the  same location as where the <b>SilverlightApplication1.xap</b> file gets created when the Visual 
            Studio Project gets built).
            <code title="Example XAML2" description="" lang="XAML">
            &lt;?xml version="1.0" encoding="UTF-8"?&gt;
            &lt;kml xmlns="http://www.opengis.net/kml/2.2"&gt;
              &lt;Document&gt;
                &lt;name&gt;Simple Placemark KML&lt;/name&gt;
                &lt;visibility&gt;1&lt;/visibility&gt;
                &lt;open&gt;1&lt;/open&gt;
                &lt;Placemark&gt;
                  &lt;name&gt;Simple placemark&lt;/name&gt;
                  &lt;visibility&gt;true&lt;/visibility&gt;
                  &lt;open&gt;0&lt;/open&gt;
                  &lt;Point&gt;
                    &lt;coordinates&gt;-122.0822035425683,37.42228990140251,0&lt;/coordinates&gt;
                  &lt;/Point&gt;
                &lt;/Placemark&gt;
              &lt;/Document&gt;
            &lt;/kml&gt;
            </code>
            </item>
            <item>
            Use <b>Windows Explorer</b> to confirm you have a the 
            <b>C:\KML_TEST\SilverlightApplication1\SilverlightApplication1.Web\ClientBin\Test.kml</b> file created (see the 
            following screen shot):<br/>
            <img border="0" alt="Location of the .kml file on disk." src="C:\ArcGIS\dotNET\API SDK\Main\ArcGISSilverlightSDK\LibraryReference\images\Client.Toolkit.DataSources.Url.VS_KML_Test_4.png"/>
            </item>
            <item>
            Hit <b>F5</b> (or click the Start Debugging button) in Visual Studio to launch the Silverlight application in 
            Internet Explorer. You should get an image that appears like the following screenshot (a single red point in San 
            Francisco):<br/>
            <img border="0" alt="Displaying the KML in a Map Control." src="C:\ArcGIS\dotNET\API SDK\Main\ArcGISSilverlightSDK\LibraryReference\images\Client.Toolkit.DataSources.Url.VS_KML_Test_3.png"/>
            </item>
            </list>
            </example>		
            <seealso cref="M:ESRI.ArcGIS.Client.Toolkit.DataSources.KmlLayer.SetSource(System.IO.Stream)"/>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.KmlLayer.ProxyUrl">
            <summary>
            Optional. Gets or sets the URL to a proxy service that brokers Web requests between the Silverlight 
            client and a KML file.  Use a proxy service when the KML file is not hosted on a site that provides
            a cross domain policy file (clientaccesspolicy.xml or crossdomain.xml).
            </summary>
            <remarks>
            <para>
            Accessing a KmlLayer is unique in that ArcGIS Server is not required to view geographic information. Since 
            the KmlLayer is based upon a KML or KMZ file, all that is required is a web server to host the KML/KMZ file. 
            <b>NOTE:</b> ArcGIS Server has the ability to host geographic web services created in ArcMap as native 
            KML/KMZ files. 
            </para>
            <para>
            Developers who wish to test the KmlLayer functionality using KML/KMZ files locally on their 
            development machine have the following options:
            </para>
            <para>
            <b>Option #1:</b> Developers can place the KML/KMZ file in the ClientBin directory of the test web site that 
            is generated when creating a Silverlight application using Visual Studios built in web server (i.e. the directory 
            that has the path: ..\[APPLICATION_NAME].Web\ClientBin). This option is the easiest method for testing KML/KMZ files 
            when there is no web browser security issues because all of the KML/KMZ functionality is self contained. See the 
            code example in the <see cref="P:ESRI.ArcGIS.Client.Toolkit.DataSources.KmlLayer.Url">KmlLayer.Url</see> Property
            for one common workflow example of Option #1.
            </para>
            <para>
            <b>NOTE:</b> If the KML/KMZ file has hyperlinks (i.e. they begin with http://) to resources (such as other KML/KMZ 
            files) to locations outside of your local network, <b>IT WILL BE REQUIRED</b> to use Option #2 for local 
            testing of KML/KMZ files. Some common KML tags (or nested sub-tags) that can use external hyperlinks outside 
            of your local network include the following: &lt;href&gt;, &lt;Style&gt;, &lt;Icon&gt;, &lt;IconStyle&gt;, 
            &lt;StyleMap&gt;, &lt;NetworkLink&gt;, and &lt;styleUrl&gt;. Additionally, if you get a Security Exception 
            or unhandled exception 4004 errors in Visual Studio during your Silverlight application debugging, you will 
            most likely need to use Option #2 instead. 
            </para>
            <para>
            <b>Option #2:</b> If the developer has installed a web server on the same computer as Visual Studio (for example: 
            Internet Information Server (IIS)), then they can place the KML/KMZ file in an application directory of their 
            local web server (i.e. http://localhost).  Using this option has the additional requirements of: 
            </para>
            <list type="bullet">
             <item>Setting up the correct MIME type on the web server to handle KML/KMZ files</item>
             <item>Adding a crossdomain.xml file to the root of the web server</item>
             <item>Making use of a proxy to avoid Security Exception error messages</item>
            </list>
            <para> See the code example in this document for one common workflow example of Option #2.
            </para>
            </remarks>
            <example>
            <para>
            The following steps show one example of how a developer could test a KML file that is on the local development computer 
            with external hyperlink dependencies to another KML file outside of the local network using Microsoft IIS web server on 
            a Windows 7 Operating System (it is assumed that IIS is installed):
            </para>
            <para>
            Step 1: Setting up the correct MIME type on the web server to handle KML/KMZ files
            </para>
            <list type="bullet">
             <item>
             Type <b>InteMgr.exe</b> in the Windows 7 <b>Search programs and files</b> taskbar and hit Enter to launch 
             <b>Internet Information Service (IIS) Manager</b> application (see the following screen shots):<br/>
             <img border="0" alt="Finding and opening the InetMgr.exe application." src="C:\ArcGIS\dotNET\API SDK\Main\ArcGISSilverlightSDK\LibraryReference\images\Client.Toolkit.DataSources.ProxyUrl.VS_KML_Test_1.png"/><br/>
             <img border="0" alt="The Internet Information Services (IIS) Manager application." src="C:\ArcGIS\dotNET\API SDK\Main\ArcGISSilverlightSDK\LibraryReference\images\Client.Toolkit.DataSources.ProxyUrl.VS_KML_Test_2.png"/>
             </item>
             <item>
             Click on the <b>Features View</b> tab and scroll down to the <b>IIS</b> section. Select the <b>MIME Types</b> 
             icon and in the <b>Actions</b> area click the <b>Open Feature</b> hyperlink (see the following screen shot):<br/>
             <img border="0" alt="Add a MIME Type in the Internet Information Services (IIS) Manager application." src="C:\ArcGIS\dotNET\API SDK\Main\ArcGISSilverlightSDK\LibraryReference\images\Client.Toolkit.DataSources.ProxyUrl.VS_KML_Test_3.png"/>
             </item>
             <item>
             Click the <b>Add...</b> hyperlink to launch the <b>Add MIME Type</b> dialog (see the following screen shot):<br/>
             <img border="0" alt="The Add MIME Type dialog in the Internet Information Services (IIS) Manager application." src="C:\ArcGIS\dotNET\API SDK\Main\ArcGISSilverlightSDK\LibraryReference\images\Client.Toolkit.DataSources.ProxyUrl.VS_KML_Test_4.png"/>
             </item>
             <item>
             Add the correct <b>MIME Type</b> for both the KML and KMZ file types and click <b>OK</b> in the dialog for each entry 
             using the values:
             <para><u>KML:</u></para>
              File name extension: <b>.kml</b><br/>
              MIME type: <b>application/vnd.google-earth.kml+xml</b><br/>
             <para/>
             <para><u>KMZ:</u></para>
              File name extension: <b>.kmz</b><br/>
              MIME type: <b>application/vnd.google-earth.kmz</b><br/>
              <para/><para/>
             The <b>Internet Information Service (IIS) Manager</b> application should look like the following screen shot when completed:<br/>
             <img border="0" alt="The Internet Information Services (IIS) Manager application after the KML/KMZ MIME Types are added." src="C:\ArcGIS\dotNET\API SDK\Main\ArcGISSilverlightSDK\LibraryReference\images\Client.Toolkit.DataSources.ProxyUrl.VS_KML_Test_5.png"/>
             </item>
             <item>Close the <b>Internet Information Service (IIS) Manager</b> application.</item>
             <item>
             <b>NOTE:</b> Refer to the following Google and Microsoft documents for more information on KML/KMZ MIME types in 
             IIS: <a href="http://code.google.com/apis/kml/documentation/kml_tut.html#kml_server" target="_blank">KML Tutorial</a> 
             and <a href="http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/eb5556e2-f6e1-4871-b9ca-b8cf6f9c8134.mspx?mfr=true" target="_blank">Working with MIME Types (IIS 6.0)</a>.
             </item>
            </list>
            <para>
            Step 2: Adding a <b>clientaccesspolicy.xml</b> file to the root of the web server
            </para>
            <para>
            For security reasons, the Silverlight runtime restricts access to data and services for specific classes across 
            schemes, domains, and zones. These restrictions impact the ArcGIS Silverlight API when the KML/KMZ file has 
            hyperlinks (i.e. they begin with http://) to resources (such as other KML/KMZ files) to locations outside of 
            your local network. You need to create a client access policy file on the local web server to enable access 
            to resources outside of your local network. Perform the following actions to set up using a 
            <b>clientaccesspolicy.xml</b> file:
            </para>
            <list type="bullet">
             <item>
             Right click on the following hyperlink: 
             <a href="http://services.arcgisonline.com/clientaccesspolicy.xml" target="_blank">http://services.arcgisonline.com/clientaccesspolicy.xml</a> 
             and choose <b>Save Target As...</b> to save a local copy of the <b>clientaccesspolicy.xml</b> file on your local 
             hard drive. This file was created for use on ArcGIS Online but is sufficient for http://locahost testing on 
             a development computer.
             </item>
             <item>
             Copy the <b>clientaccesspolicy.xml</b> file into the <b>C:\inetpub\wwwroot</b> folder of the development 
             machine that has IIS installed. You may need Administrator privileges to copy the file. If you get the 
             <b>Destination Folder Access Denied</b> dialog, just click the <b>Continue</b> button to copy the file 
             (see the following screen shots):<br/>
             <img border="0" alt="Destination Folder Access Denied dialog." src="C:\ArcGIS\dotNET\API SDK\Main\ArcGISSilverlightSDK\LibraryReference\images\Client.Toolkit.DataSources.ProxyUrl.VS_KML_Test_7.png"/><br/>
             <img border="0" alt="The Internet Information Services (IIS) Manager application." src="C:\ArcGIS\dotNET\API SDK\Main\ArcGISSilverlightSDK\LibraryReference\images\Client.Toolkit.DataSources.ProxyUrl.VS_KML_Test_8.png"/><br/>
             <b>NOTE:</b> For more information on the necessity and use of <b>clientaccesspolicy.xml</b> files refer to 
             the ArcGIS Resource Center Blog document 
             <a href="http://blogs.esri.com/Dev/blogs/silverlightwpf/archive/2009/08/31/Using-services-across-schemes.aspx" target="_blank">Using services across schemes</a>.
             </item> 
            </list>
            <para>
            Step 3: Making use of a proxy to avoid Security Exception error messages
            </para>
            <para>
            Again as part of the Silverlight runtime security restrictions developers need a proxy service to broker Web 
            requests between the Silverlight client and the KML/KMZ files. The proxy adds credential information that 
            allows the web server to access the KML/KMZ files. Perform the following actions to set up using a proxy on 
            the local web server:
            </para>
            <list type="bullet">
              <item>Using Windows Explorer, create a <b>C:\ProxyDownload</b> directory on the development computer.</item>
              <item>
              Right click on the following hyperlink: 
              <a href="http://help.arcgis.com/en/webapi/silverlight/help/SLProxyPage.zip" target="_blank">http://help.arcgis.com/en/webapi/silverlight/help/SLProxyPage.zip</a> 
              and choose <b>Save Target As...</b> to save a local copy of the <b>SLProxyPage.zip</b> file to the 
              <b>C:\ProxyDownload</b> directory on your local hard drive. This file was created by ESRI as a starting 
              point for customization in using proxies.
              </item>
              <item>
              Using a ZIP/UNZIP application (like <b>7 Zip</b> or <b>WinZip</b>) extract the compressed <b>SLProxyPage.zip</b> file onto 
              your development computer’s hard drive. This will explode out the folder <b>C:\ProxyDownload\SLProxyPage</b> 
              with three files: <b>proxy.ashx</b>, <b>proxy.config</b>, and <b>ReadMe.txt</b> (see the following screen shot):<br/>
              <img border="0" alt="Using Windows Explorer to see where the SLProxyPage.zip was unzipped." src="C:\ArcGIS\dotNET\API SDK\Main\ArcGISSilverlightSDK\LibraryReference\images\Client.Toolkit.DataSources.ProxyUrl.VS_KML_Test_9.png"/>
              </item>
              <item>
              In <b>Windows Explorer</b>, navigate to the <b>C:\ProxyDownload\SLProxyPage</b> directory, right click on 
              the <b>proxy.config</b> file and choose <b>Properties</b> (see the following screen shot):<br/> 
              <img border="0" alt="Accessing the Properties of the proxy.config file in Using Windows Explorer." src="C:\ArcGIS\dotNET\API SDK\Main\ArcGISSilverlightSDK\LibraryReference\images\Client.Toolkit.DataSources.ProxyUrl.VS_KML_Test_17.png"/>
              </item>
              <item>
              In the <b>proxy.config Properties</b> dialog, uncheck the <b>Read-only</b> attribute and click <b>Apply</b> (see the 
              following screen shot):<br/>
              <img border="0" alt="Removed the Read-only Attribute from the proxy.config file." src="C:\ArcGIS\dotNET\API SDK\Main\ArcGISSilverlightSDK\LibraryReference\images\Client.Toolkit.DataSources.ProxyUrl.VS_KML_Test_27.png"/>
              </item>
              <item>
              Then click <b>OK</b> to close the <b>proxy.config Properties</b> dialog.
              </item>
              <item>
              In <b>Windows Explorer</b>, right click on the <b>C:\ProxyDownload\SLProxyPage\proxy.config</b> file and 
              choose <b>Open with Notepad</b> (see the following screen shot):<br/>
              <img border="0" alt="Using Windows Explorer to open the proxy.config file in Notepad." src="C:\ArcGIS\dotNET\API SDK\Main\ArcGISSilverlightSDK\LibraryReference\images\Client.Toolkit.DataSources.ProxyUrl.VS_KML_Test_15.png"/>
              </item>
              <item>
              Change the 4th line from: <b>&lt;ProxyConfig mustMatch="true"&gt;</b> to: <b>&lt;ProxyConfig mustMatch="false"&gt;</b>, 
              save the file and close it (see the following screen shot):<br/>
              <img border="0" alt="Using Windows Explorer to open the proxy.config file in Notepad." src="C:\ArcGIS\dotNET\API SDK\Main\ArcGISSilverlightSDK\LibraryReference\images\Client.Toolkit.DataSources.ProxyUrl.VS_KML_Test_16.png"/>
              </item>
              <item>
              Copy the <b>C:\ProxyDownload\SLProxyPage</b> folder into the <b>C:\InetPub\wwwroot</b> folder of the 
              development machine that has IIS installed. You may need Administrator privileges to copy the file. If you 
              get the <b>Destination Folder Access Denied</b> dialog, just click the <b>Continue</b> button to copy the 
              file (see the following screen shots):<br/>
              <img border="0" alt="Destination Folder Access Denied dialog." src="C:\ArcGIS\dotNET\API SDK\Main\ArcGISSilverlightSDK\LibraryReference\images\Client.Toolkit.DataSources.ProxyUrl.VS_KML_Test_7.png"/><br/>
              <img border="0" alt="Confirming that the SLPRoxyPage directory was added to the C:\inetpub\wwwroot directoryin Windows Explorer." src="C:\ArcGIS\dotNET\API SDK\Main\ArcGISSilverlightSDK\LibraryReference\images\Client.Toolkit.DataSources.ProxyUrl.VS_KML_Test_10.png"/>
              </item>
              <item>
              Type <b>InteMgr.exe</b> in the Windows 7 <b>Search programs and files taskbar</b> and hit Enter to launch the
              <b>Internet Information Service (IIS) Manager</b> application (see the following screen shots):<br/>
              <img border="0" alt="Starting the InetMgr.exe application." src="C:\ArcGIS\dotNET\API SDK\Main\ArcGISSilverlightSDK\LibraryReference\images\Client.Toolkit.DataSources.ProxyUrl.VS_KML_Test_1.png"/><br/>
              <img border="0" alt="Viewing the SLProxyPage folder in the Internet Information Services (IIS) Manager application." src="C:\ArcGIS\dotNET\API SDK\Main\ArcGISSilverlightSDK\LibraryReference\images\Client.Toolkit.DataSources.ProxyUrl.VS_KML_Test_11.png"/>
              </item>
              <item>
              In the <b>Internet Information Services (IIS) Manager</b> application, right click on the <b>SLProxyPage</b> folder and 
              choose <b>Convert to Application</b> (see the following screen shot):<br/>
              <img border="0" alt="Using the Internet Information Services (IIS) Manager application to convert the SLProxyPage folder into an Application." src="C:\ArcGIS\dotNET\API SDK\Main\ArcGISSilverlightSDK\LibraryReference\images\Client.Toolkit.DataSources.ProxyUrl.VS_KML_Test_12.png"/>
              </item>
              <item>
              In the <b>Add Application</b> dialog, accept the defaults and click <b>OK</b> (see the following screen shot):<br/>
              <img border="0" alt="Accept the defaults in the Add Application dialog." src="C:\ArcGIS\dotNET\API SDK\Main\ArcGISSilverlightSDK\LibraryReference\images\Client.Toolkit.DataSources.ProxyUrl.VS_KML_Test_13.png"/>
              </item>
              <item>
              This will change the icon for the <b>SLProxyPage</b> folder to be a web application in IIS (see the following screen shot):<br/>
              <img border="0" alt="Accept the defaults in the Add Application dialog." src="C:\ArcGIS\dotNET\API SDK\Main\ArcGISSilverlightSDK\LibraryReference\images\Client.Toolkit.DataSources.ProxyUrl.VS_KML_Test_14.png"/>
              </item>
              <item>
              Close the <b>Internet Information Services (IIS) Manager</b> application.
              </item>
              <item>
              <b>NOTE:</b> To learn more about how proxies work refer to the <b>ArcGIS Resource Center</b> document 
              <a href="http://help.arcgis.com/en/webapi/silverlight/help/index.html#/Secure_services/016600000022000000/" target="_blank">Secure Services</a>. 
              </item>
            </list>
            <para>
            Step 4: Create the KML file that has resource links to external sources outside of the local network and add to IIS as an application folder
            </para>
            <list type="bullet">
              <item>
              Using <b>Windows Explorer</b>, create a new folder on the hard drive of the development computer. Name the folder 
              <b>C:\TEST_KML_FILES</b>.
              </item>
              <item>Using the text editor application, <b>Notepad</b>, copy the following KML syntax and save the file as 
              <b>C:\ TEST_KML_FILES \Test_w_http_link.kml</b>:
              <code title="Example XAML1" description="" lang="XAML">
              &lt;?xml version="1.0" encoding="UTF-8"?&gt;
              &lt;kml xmlns="http://www.opengis.net/kml/2.2"&gt;
                &lt;Document&gt;
                  &lt;name&gt;TEST WITH http LINK&lt;/name&gt;
                  &lt;visibility&gt;1&lt;/visibility&gt;
                  &lt;open&gt;1&lt;/open&gt;
                  &lt;StyleMap id="styleMap"&gt;
                    &lt;Pair&gt;
                      &lt;key&gt;normal&lt;/key&gt;
                      &lt;styleUrl&gt;http://code.google.com/apis/kml/documentation/KML_Samples.kml#normalPlacemark&lt;/styleUrl&gt;
                    &lt;/Pair&gt;
                    &lt;Pair&gt;
                      &lt;key&gt;highlight&lt;/key&gt;
                      &lt;styleUrl&gt;http://code.google.com/apis/kml/documentation/KML_Samples.kml#highlightPlacemark&lt;/styleUrl&gt;
                    &lt;/Pair&gt;
                  &lt;/StyleMap&gt;
                    &lt;Placemark&gt;
                      &lt;name&gt;Simple placemark&lt;/name&gt;
                      &lt;visibility&gt;true&lt;/visibility&gt;
                      &lt;open&gt;0&lt;/open&gt;
                      &lt;styleUrl&gt;#styleMap&lt;/styleUrl&gt;
                      &lt;Point&gt;
                        &lt;coordinates&gt;-122.0822035425683,37.42228990140251,0&lt;/coordinates&gt;
                      &lt;/Point&gt;
                    &lt;/Placemark&gt;
                &lt;/Document&gt;
              &lt;/kml&gt;
              </code>
              </item>
              <item>
              Use <b>Windows Explorer</b> to confirm you have a the <b>C:\KML_TEST_FILES\Test_w_http_link.kml</b> file created (see the following 
              screen shot):<br/>
              <img border="0" alt="Confirming the C:\KML_TEST_FILES\Test_w_http_link.kml file exists in Windows Explorer." src="C:\ArcGIS\dotNET\API SDK\Main\ArcGISSilverlightSDK\LibraryReference\images\Client.Toolkit.DataSources.ProxyUrl.VS_KML_Test_21.png"/>
              </item>
              <item>
              Copy the <b>C:\TEST_KML_FILES</b> directory to the <b>C:\inetpub\wwwroot</b> folder (see the following screen shot):<br/>
              <img border="0" alt="Using Windows Explorer to copy C:\TEST_KML_FILES to C:\inetpub\wwwroot." src="C:\ArcGIS\dotNET\API SDK\Main\ArcGISSilverlightSDK\LibraryReference\images\Client.Toolkit.DataSources.ProxyUrl.VS_KML_Test_22.png"/>
              </item>
              <item>
              Type <b>InteMgr.exe</b> in the Windows 7 <b>Search programs and files</b> taskbar and hit Enter to launch <b>Internet Information 
              Service (IIS) Manager</b> application (see the following screen shots):<br/>
              <img border="0" alt="Starting the InetMgr.exe application." src="C:\ArcGIS\dotNET\API SDK\Main\ArcGISSilverlightSDK\LibraryReference\images\Client.Toolkit.DataSources.ProxyUrl.VS_KML_Test_1.png"/><br/>
              <img border="0" alt="Viewing the KML_TEST_FILES folder in the Internet Information Services (IIS) Manager application." src="C:\ArcGIS\dotNET\API SDK\Main\ArcGISSilverlightSDK\LibraryReference\images\Client.Toolkit.DataSources.ProxyUrl.VS_KML_Test_23.png"/>
              </item>
              <item>
              In the <b>Internet Information Services (IIS) Manager</b> application, right click on the <b>KML_TEST_FILES</b> folder and 
              choose <b>Convert to Application</b> (see the following screen shot):<br/>
              <img border="0" alt="Converting the KML_TEST_FILES folder into an Application in the Internet Information Services (IIS) Manager application." src="C:\ArcGIS\dotNET\API SDK\Main\ArcGISSilverlightSDK\LibraryReference\images\Client.Toolkit.DataSources.ProxyUrl.VS_KML_Test_24.png"/>
              </item>
              <item>
              In the <b>Add Application</b> dialog, accept the defaults and click <b>OK</b> (see the following screen shot):<br/>
              <img border="0" alt="Accept the defaults in the Add Application dialog." src="C:\ArcGIS\dotNET\API SDK\Main\ArcGISSilverlightSDK\LibraryReference\images\Client.Toolkit.DataSources.ProxyUrl.VS_KML_Test_25.png"/>
              </item>
              <item>
              This will change the icon for the <b>KML_TEST_FILES</b> folder to be a web application in IIS (see the following screen shot):<br/>
              <img border="0" alt="Accept the defaults in the Add Application dialog." src="C:\ArcGIS\dotNET\API SDK\Main\ArcGISSilverlightSDK\LibraryReference\images\Client.Toolkit.DataSources.ProxyUrl.VS_KML_Test_26.png"/>
              </item>
              <item>
              Close the <b>Internet Information Services (IIS) Manager</b> application.
              </item>
            </list>
            <para>
            Step 5: Create a Visual Studio application to test the KML file that has references to resources (i.e. other KML files) on different networks
            </para>
            <list type="bullet">
              <item>Launch Visual Studio 2010.</item>
              <item>Choose <b>File</b> | <b>New Project</b> from the Visual Studio menus.</item>
              <item>
              In the <b>New Project</b> dialog, expand .NET Language of your choice (Visual Basic shown in this 
              example), click on the <b>Silverlight Template</b>, choose <b>Silverlight Application</b>, and specify the 
              following information in the textboxes: 
              <list type="bullet">
                <item>Name: <b>SilverlightApplication2</b></item>
                <item>Location: <b>C:\KML_Test\</b></item>
                <item>Solution name: <b>SilverlightApplication2</b></item>
              </list>
              See the following screen shot:<br/>
              <img border="0" alt="Choosing a Silverlight Application in Visual Studio." src="C:\ArcGIS\dotNET\API SDK\Main\ArcGISSilverlightSDK\LibraryReference\images\Client.Toolkit.DataSources.ProxyUrl.VS_KML_Test_28.png"/>
              </item>
              <item>
              In the <b>New Silverlight Application</b> dialog, accept the defaults (make sure the <b>Host the Silverlight 
              application in a new Web site</b> is checked). This will use the Visual Studio built-in web server (Cassini) for 
              launching your Silverlight application (see the following screen shot):<br/>
              <img border="0" alt="Accepting the defaults in the New Silverlight Application dialog." src="C:\ArcGIS\dotNET\API SDK\Main\ArcGISSilverlightSDK\LibraryReference\images\Client.Toolkit.DataSources.ProxyUrl.VS_KML_Test_29.png"/>
              </item>
              <item>Drag an ESRI Silverlight API <b>Map Control</b> onto the <b>MainPage.xaml</b> design surface.</item>
              <item>Add the following additional Reference to the Visual Studio Project: <b>ESRI.ArcGIS.Client.Toolkit.DataSources</b>.</item>
              <item>Replace the XAML code in the <b>MainPage.xaml</b> with the following:
              <code title="Example XAML1" description="" lang="XAML">
              &lt;UserControl x:Class="SilverlightApplication2.MainPage"
                  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                  xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
                  xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
                  mc:Ignorable="d"
                  d:DesignHeight="300" d:DesignWidth="400" 
                  xmlns:esri="http://schemas.esri.com/arcgis/client/2009"&gt;
              
                  &lt;Grid x:Name="LayoutRoot" Background="White"&gt;
                  &lt;esri:Map Background="White" HorizontalAlignment="Left" Name="Map1" VerticalAlignment="Top" 
                            WrapAround="True" Height="276" Width="376" Margin="12,12,0,0"&gt;
                    &lt;esri:Map.Layers&gt;
                      &lt;esri:LayerCollection&gt;
                        &lt;esri:ArcGISTiledMapServiceLayer 
                          Url="http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer" /&gt;
                        &lt;esri:KmlLayer Url="http://localhost/KML_TEST_FILES/Test_w_http_link.kml" 
                                       ProxyUrl="http://localhost/SLProxyPage/proxy.ashx"/&gt;
                      &lt;/esri:LayerCollection&gt;
                    &lt;/esri:Map.Layers&gt;
                  &lt;/esri:Map&gt;
                &lt;/Grid&gt;
              &lt;/UserControl&gt;
              </code>
              </item>
              <item>
              Choose <b>Build</b> | <b>Build Solution</b> from the Visual Studio menus (you should not have any 
              compiler Errors/Warnings).
              </item>
              <item>
              Hit <b>F5</b> (or click the Start Debugging button) in Visual Studio to launch the Silverlight application in Internet 
              Explorer. You should get an image that appears like the following (a single upside down white tear drop in San Francisco). 
              Although the KML file is hosted locally on the same development machine as the Silverlight application, the 
              <b>Test_w_http_link.kml</b> has a <b>http://</b> link to another KML document outside of our local network (i.e. 
              http://code.google.com/apis/kml/documentation/KML_Samples.kml) (see the following screen shot):<br/>
              <img border="0" alt="Displaying the KML in a Map Control." src="C:\ArcGIS\dotNET\API SDK\Main\ArcGISSilverlightSDK\LibraryReference\images\Client.Toolkit.DataSources.ProxyUrl.VS_KML_Test_20.png"/>
              </item>
            </list>
            </example>		
            <value>The Proxy URL string.</value>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.KmlLayer.DisableClientCaching">
            <summary>Disables caching an KLM document on the client.</summary>
            <remarks>
            <para>
            The default value is false. If true, adds a timestamp parameter ("_ts") to the request to prevent 
            loading a KML document from the browser's cache.
            </para>
            </remarks>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.KmlLayer.MapTip">
            <summary>
            Gets or sets the MapTip displayed when the mouse hovers on a 
            <see cref="T:ESRI.ArcGIS.Client.Graphic">Graphic</see> in the KmlLayer (or its sub-layers).
            </summary>
            <seealso cref="P:ESRI.ArcGIS.Client.GraphicsLayer.MapTip"/>
            <remarks>
            <para>
            A KmlLayer.MapTip is a FrameworkElement that displays a visual popup containing information associated 
            with a Graphic. Defining the User Interface (UI) look of the FrameworkElement for a KmlLayer.MapTip can 
            be done in either XAML (see the code example in this document) or code-behind.
            </para>
            <para>        
            There are several sources of where the information that is displayed in a KmlLayer.MapTip can come from:
            <list type="bullet">
            <item>
            The information is stored in the 
            <see cref="P:ESRI.ArcGIS.Client.Graphic.Attributes">Graphic.Attributes</see> of the KmlLayer.
            </item>
            <item>The information is hard coded</item>
            <item>The information is generated on the fly based upon user interaction with the Map</item>
            </list>
            </para>
            <para>
            You can use a binding expression in XAML to bind the Attributes of the GraphicsLayer (embedded in the KmlLayer) to the 
            <a href="http://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.datacontext(v=vs.95).aspx" target="_blank">DataContext</a> 
            Property of the Graphic. The general usage syntax follows the pattern:<br></br>
            <code lang="XAML">
            &lt;esri:KmlLayer&gt;
              &lt;esri:KmlLayer.MapTip&gt;
                &lt;StackPanel Orientation="Horizontal" Background="White"&gt;
                  &lt;TextBlock Text="KML Placemark Name:" /&gt;
                  &lt;TextBlock Text="{Binding [SomeAttributeName]}" /&gt;
                &lt;/StackPanel&gt;
              &lt;/esri:KmlLayer.MapTip&gt;
            &lt;esri:KmlLayer&gt;
            </code>
            </para>
            <para>
            <b>Tip:</b> Developers can perform DataContext binding directly to 
            Dictionary Keys by specifying the Key name in brackets. Therefore when binding the DataContext of 
            a KmlLayer.MapTip to a specific attribute name in the Graphic.Attributes (which is a Dictionary), 
            encase the attribute name in square brackets (i.e. []). Example: 
            <b>&lt;TextBlock Text="{Binding [name]}" /&gt;</b> or the slightly more verbose version 
            <b>&lt;TextBlock Text="{Binding Path=[name]}" /&gt;</b>).
            </para>
            <para>
            The following KML tags map 
            to Attributes in a GraphicsLayer that can be used for binding to a KmlLayer.MapTip: &lt;atom:author&gt; 'name' 
            attribute, &lt;atom:link&gt; 'href' attribute, ' &lt;atom:name&gt; 'href' attribute, &lt;BalloonStyle&gt;&lt;text&gt; 
            information, &lt;description&gt; information, &lt;name&gt;, and &lt;ExtendedData&gt;.
            </para>
            <para>
            The &lt;ExtendedData&gt; tag maps internally to the 
            <see cref="T:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlExtendedData">ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlExtendedData</see> 
            Class. Each KmlExtendedData object has three Properties: 'DisplayName', 'Name', and 'Value' that can 
            have attribute information. In order to use binding from a KmlLayer.MapTip to a KmlExtendedData object, 
            developers must create their own custom converter. See the code example in this document for one possible 
            way to use a custom converter for the KmlExtendedData Class. Additional discussion on the use of the 
            KML &lt;ExtendedData&gt; tags can also be found in <b>ArcGIS Resource Center</b> in the Forum thread entitled: 
            <a href="http://forums.arcgis.com/threads/27927-KMLLayer-use-of-identify-or-maptips" target="_blank">KMLLayer use of identify or maptips</a>.
            </para>
            </remarks>
            <example>
            <para>
            <b>How to use:</b>
            </para>
            <para>
            When the application loads the KmlLayer.MapTip will be wired up automatically in XAML. Move your cursor over the 
            the red circles to see MapTip information about that large city. Follow the <b>SPECIAL INSTRUCTIONS</b> to create
            this intermediate level of sample application.
            </para>
            <para>
            The following screen shot corresponds to the code example in this page.
            </para>
            <para>
            <img border="0" alt="Displaying a KmlLayer with MapTips in a Map Control." src="C:\ArcGIS\dotNET\API SDK\Main\ArcGISSilverlightSDK\LibraryReference\images\Client.Toolkit.DataSources.KmlLayer.MapTip2.png"/>
            </para>
            <para>
            <b>SPECIAL INSTRUCTIONS:</b>
            </para>
            <para>
            The following steps show one example of how a developer could test a KML file (with no external 
            hyperlink dependencies) using Visual Studio’s built-in web server (Cassini) to take advantage of the KmlLayer.MapTip Property:
            </para>
            <list type="bullet">
            <item>Launch Visual Studio 2010</item>
            <item>Choose <b>File</b> | <b>New Project</b> from the Visual Studio menus.</item>
            <item>
            In the <b>New Project</b> dialog, expand .NET Language of your choice (Visual Basic shown in this 
            example), click on the <b>Silverlight Template</b>, choose <b>Silverlight Application</b>, and specify the 
            following information in the textboxes: 
            <list type="bullet">
            <item>Name: <b>KmlLayer_MapTip_Test</b></item>
            <item>Location: <b>C:\KML_Test\</b></item>
            <item>Solution name: <b>KmlLayer_MapTip_Test</b></item>
            </list>
            See the following screen shot:<br/>
            <img border="0" alt="Choosing a Silverlight Application in Visual Studio." src="C:\ArcGIS\dotNET\API SDK\Main\ArcGISSilverlightSDK\LibraryReference\images\Client.Toolkit.DataSources.KmlLayer.MapTip1.png"/>
            </item>
            <item>
            In the <b>New Silverlight Application</b> dialog, accept the defaults (make sure the <b>Host the Silverlight 
            application in a new Web site</b> is checked). This will use the Visual Studio built-in web server (Cassini) for 
            launching your Silverlight application.
            </item>
            <item>
            Drag an ESRI Silverlight API <b>Map Control</b> onto the <b>MainPage.xaml</b> design surface.
            </item>
            <item>
            Add the following additional Reference to the Visual Studio Project: <b>ESRI.ArcGIS.Client.Toolkit.DataSources</b>.
            </item>
            <item>
            Choose <b>Project</b> | <b>Add Class</b> from the Visual Studio menus. In the 
            <b>Add new Item – KmlLayer_MapTip_Test</b> dialog, specify <b>ExtendedDataConverter.vb</b> or <b>ExtendedDataConverter.cs</b> 
            for the <b>Name:</b> depending on the .NET Language used and click the <b>Add</b> button (see the following screen shot):<br/>
            <img border="0" alt="Adding the ExtendedDataConverter Class to the Visual Studio Project." src="C:\ArcGIS\dotNET\API SDK\Main\ArcGISSilverlightSDK\LibraryReference\images\Client.Toolkit.DataSources.KmlLayer.MapTip1a.png"/>
            </item>
            <item>
            Replace the <b>ExtendedDataConverter.vb</b> or <b>ExtendedDataConverter.cs</b> with the following:<br/>
            <b><u>C# code:</u></b><br/>
            <code title="Example CS1" description="" lang="CS">
            // This is a custom Class used to convert the complex KmlExtendedData object with it's three Properties 
            // (DisplayName, Name, and Value) into a simple string that can be used for binding to the KmlLayer.MapTip.
            // In your application add a new class called 'ExtendedDataConverter.vb' and replace the contents of that
            // Class with this code.
            
            public class ExtendedDataConverter : Data.IValueConverter
            {
              // This is the function that does the work of the conversion.
              public object Convert(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture)
              {
              	 // Create a variable that will be used to return something.
              	 string theReturnValue = null;
                
              	 // Ensure we have the KmlExtendedData in an IList.
              	 if (value is IList&lt;ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlExtendedData&gt;)
              	 {
              	   // Cast the input 'value' object of the converter to the correct Type.
              	   IList&lt;ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlExtendedData&gt; theIList = (IList&lt;ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlExtendedData&gt;)value;
                  
              	   // Obtain the first KmlExtendedData object from the IList.
              	   ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlExtendedData theKmlExtendedData = theIList.FirstOrDefault();
                  
              	   // Depending on what passed as the ConverterParameter (which is the input argument 'parameter') in XAML will 
              	   // determine what we Return back. The options are: 'Value', 'DisplayName', and 'Name'.
              	   if (parameter.ToString() == "Value")
              	   {
                 		 theReturnValue = theKmlExtendedData.Value;
              	   }
              	   else if (parameter.ToString() == "DisplayName")
              	   {
                 	 	theReturnValue = theKmlExtendedData.DisplayName;
              	   }
              	   else if (parameter.ToString() == "Name")
              	   {
                		  theReturnValue = theKmlExtendedData.Name;
            	     }
            	   }  
            	   // Return something back.
            	   return theReturnValue;
              }
            
              // This function is necessary because we implement the Data.IValueConverter Interface. Hence we must have the signature
              // defined even though we will not really be doing any ConvertBack operations in this example.
              public object ConvertBack(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture)
              {
                throw new System.NotImplementedException();
              }
            }
            </code>
            <b><u>VB.NET code:</u></b><br/>
            <code title="ExtendedDataConverter.vb" description="ExtendedDataConverter.vb" lang="VB.NET">
            ' This is a custom Class used to convert the complex KmlExtendedData object with it's three Properties 
            ' (DisplayName, Name, and Value) into a simple string that can be used for binding to the KmlLayer.MapTip.
            ' In your application add a new class called 'ExtendedDataConverter.vb' and replace the contents of that
            ' Class with this code.
              
            Public Class ExtendedDataConverter
              Implements Data.IValueConverter
              
              ' This is the function that does the work of the conversion.
              Public Function Convert(ByVal value As Object,
                                      ByVal targetType As System.Type,
                                      ByVal parameter As Object,
                                      ByVal culture As System.Globalization.CultureInfo) As Object Implements System.Windows.Data.IValueConverter.Convert
                
                ' Create a variable that will be used to return something.
                Dim theReturnValue As String = Nothing
                
                ' Ensure we have the KmlExtendedData in an IList.
                If TypeOf value Is IList(Of ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlExtendedData) Then
                  
                  ' Cast the input 'value' object of the converter to the correct Type.
                  Dim theIList As IList(Of ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlExtendedData) =
                   CType(value, IList(Of ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlExtendedData))
                  
                  ' Obtain the first KmlExtendedData object from the IList.
                  Dim theKmlExtendedData As ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlExtendedData = theIList.FirstOrDefault()
                  
                  ' Depending on what passed as the ConverterParameter (which is the input argument 'parameter') in XAML will 
                  ' determine what we Return back. The options are: 'Value', 'DisplayName', and 'Name'.
                  If parameter.ToString = "Value" Then
                    theReturnValue = theKmlExtendedData.Value
                  ElseIf parameter.ToString = "DisplayName" Then
                    theReturnValue = theKmlExtendedData.DisplayName
                  ElseIf parameter.ToString = "Name" Then
                    theReturnValue = theKmlExtendedData.Name
                  End If
            
                End If
                
                ' Return something back.
                Return theReturnValue
                
              End Function
            
              ' This function is necessary because we implement the Data.IValueConverter Interface. Hence we must have the signature
              ' defined even though we will not really be doing any ConvertBack operations in this example.
              Public Function ConvertBack(value As Object,
                                          targetType As System.Type,
                                          parameter As Object,
                                          culture As System.Globalization.CultureInfo) As Object Implements System.Windows.Data.IValueConverter.ConvertBack
                Throw New System.NotImplementedException()
              End Function
            
            End Class
            </code>
            </item>
            <item>Replace the XAML code in the <b>MainPage.xaml</b> with the following:
            <code title="MainPage.xaml" description="MainPage.xaml" lang="XAML">
            &lt;UserControl x:Class="KmlLayer_MapTip_Test.MainPage"
                xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
                xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
                mc:Ignorable="d"
                d:DesignHeight="480" d:DesignWidth="640" 
                xmlns:esri="http://schemas.esri.com/arcgis/client/2009"
                xmlns:local="clr-namespace:KmlLayer_MapTip_Test"&gt;
                
              &lt;Grid x:Name="LayoutRoot"&gt;
                
                &lt;!-- 
                Add some resources that will used by our XAML page. 
                    
                You will need to add the correct 'local' namespace reference to the top of this XAML page that makes use of 
                custom 'ExtendedDataConverter' Class. In this code example, we used: 
                xmlns:local="clr-namespace:KmlLayer_MapTip_Test" 
                near the top of the XAML file because our Visual Studio project was named 'KmlLayer_MapTip_Test'. 
                --&gt;
                &lt;Grid.Resources&gt;
            
                  &lt;!-- 
                  The x:Key of "extendedDataConverter" is what will be used as the StaticResource when trying  bind a 
                  KmlLayer.MapTip to the KmlExtendedData Type in the .kml file.
                  --&gt;
                  &lt;local:ExtendedDataConverter x:Key="extendedDataConverter" /&gt;
                &lt;/Grid.Resources&gt;
                
                &lt;!-- Add a Map Control. Zoom to the Continental US. --&gt;
                &lt;esri:Map Background="White" HorizontalAlignment="Left" Margin="0,169,0,0" Name="Map1" VerticalAlignment="Top" 
                          WrapAround="True" Height="299" Width="628" Extent="-128.59,22.28,-66.71,51.75"&gt;
                  &lt;esri:Map.Layers&gt;
                    &lt;esri:LayerCollection&gt;
                      
                      &lt;!-- Add a background ArcGISTiledMapServiceLayer for visual reference. --&gt;
                      &lt;esri:ArcGISTiledMapServiceLayer 
                        Url="http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_StreetMap_World_2D/MapServer" /&gt;
            
                      &lt;!-- 
                      Add a KmlLayer to the Map.  In this Silverlight Application example, we are testing against a .kml
                      file that is on the local hard drive in the path: 
                      C:\KML_Test\KmlLayer_MapTip_Test\KmlLayer_MapTip_Test.Web\ClientBin. 
                      Review the API documentation for the ESRI.ArcGIS.Client.Toolkit.DataSources.KmlLayer Class for the 
                      various options of how you can Access KML/KMZ files on the local hard drive. See the example code 
                      documentation in the ESRI.ArcGIS.Client.Toolkit.DataSources.KmlLayer.MapTip Property for the structure 
                      of the .kml file.
                      --&gt;
                      &lt;esri:KmlLayer ID="BIG US CITIES" Url="BIG_US_CITIES.kml"&gt;
                        
                        &lt;!-- Set up using a MapTip on the KmlLayer. --&gt;
                        &lt;esri:KmlLayer.MapTip&gt;
                          &lt;Grid Background="White"&gt;
                            &lt;Border BorderBrush="SeaGreen" BorderThickness="10" Name="Border1"&gt;
                              &lt;StackPanel&gt;
                                &lt;StackPanel Orientation="Horizontal" Name="StackPanel_name"&gt;
                                  &lt;TextBlock Text="Name: " FontWeight="Bold" FontSize="10" VerticalAlignment="Center" /&gt;
                                    
                                  &lt;!-- For each KML Placemark bind to the &lt;name&gt; tag. --&gt;
                                  &lt;TextBlock Text="{Binding [name]}" HorizontalAlignment="Left" VerticalAlignment="Center"/&gt;
                                &lt;/StackPanel&gt;
                                &lt;StackPanel Orientation="Horizontal" Name="StackPanel_description"&gt;
                                  &lt;TextBlock Text="Nickname: " FontWeight="Bold" FontSize="10" VerticalAlignment="Center"/&gt;
                                    
                                  &lt;!-- For each KML Placemark bind to the &lt;description&gt; tag. --&gt;
                                  &lt;TextBlock Text="{Binding [description]}" HorizontalAlignment="Left" VerticalAlignment="Center"/&gt;
                                &lt;/StackPanel&gt;
                                &lt;StackPanel Orientation="Horizontal" Name="StackPanel_value"&gt;
                                
                                  &lt;!-- 
                                  For each KML Placemark bind to the &lt;ExtendedData&gt; tag. 
             
                                  This option is more complicated because the &lt;ExtendedData&gt; tag maps internally to the 
                                  ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlExtendedData Class. Each KmlExtendedData object
                                  has three Properties: 'DisplayName', 'Name', and 'Value' that can have attribute information.
                                                        
                                  A custom converter (ExtendedDataConverter.vb or ExtendedDataConverter.cs) was added to this
                                  project that helps to convert one of the three attributes in the KmlExtendedData object into
                                  something that is bindable for display in the MapTip.
                                  
                                  When looking at the binding syntax for the Text="" Property the following applies:
                                  
                                  (1) Binding [extendedData] ==&gt; extendedData is the internal attribute name of the KmlExtenedData object. 
                                  Hence you are binding to this Attribute just as you would a normal String but in this case you are 
                                  binding to an object that can have any of three attribute values ('DisplayName', 'Name', and 'Value').
                                                        
                                  (2) Converter={StaticResource extendedDataConverter} ==&gt; extendedDataConverter is the StaticResource
                                  that was defined in the &lt;Grid.Resources&gt; above.
                                  
                                  (3) ConverterParameter=Name or ConverterParameter=Value ==&gt; this is the 'parameter' argument passed into 
                                  the Convert function of the custom converter ExtendedDataConverter Class. For example: giving the 'Name' 
                                  parameter will retrieve the KmlExtendedData.Name Property as a String and giving the 'Value' parameter
                                  will retrieve the KmlExtendedData.Value Property as a String.
                                  --&gt;
                                  
                                  &lt;TextBlock 
                                    Text="{Binding [extendedData], Converter={StaticResource extendedDataConverter}, ConverterParameter=Name}" 
                                    FontWeight="Bold" FontSize="10" VerticalAlignment="Center"/&gt;
                                  &lt;TextBlock Text=": " FontWeight="Bold" FontSize="10" VerticalAlignment="Center"/&gt;
                                  &lt;TextBlock 
                                    Text="{Binding [extendedData], Converter={StaticResource extendedDataConverter}, ConverterParameter=Value}" 
                                    HorizontalAlignment="Left" VerticalAlignment="Center"/&gt;
                                    
                                &lt;/StackPanel&gt;
                              &lt;/StackPanel&gt;
                            &lt;/Border&gt;
                          &lt;/Grid&gt;
                        &lt;/esri:KmlLayer.MapTip&gt;
                      &lt;/esri:KmlLayer&gt;
                      
                    &lt;/esri:LayerCollection&gt;
                  &lt;/esri:Map.Layers&gt;
                &lt;/esri:Map&gt;
            
                &lt;!-- Provide the instructions on how to use the sample code. --&gt;
                &lt;TextBlock Height="138" HorizontalAlignment="Left" Name="TextBlock1" VerticalAlignment="Top" Width="628" 
                   TextWrapping="Wrap" Text="When the application loads the KmlLayer.MapTip will be wired up automatically in 
                   XAML. Move your cursor over the the red circles to see MapTip information about that large city. Follow the 
                   SPECIAL INSTRUCTIONS to create this intermediate level of sample application." /&gt;
              &lt;/Grid&gt;
              
            &lt;/UserControl&gt;
            </code>
            </item>
            <item>
            Choose <b>Build</b> | <b>Build Solution</b> from the Visual Studio menus (you should not have any 
            compiler Errors/Warnings).
            </item>
            <item>
            Using the text editor application, <b>Notepad</b>, copy the following KML syntax and save the file as 
            <b> C:\KML_Test\KmlLayer_MapTip_Test\KmlLayer_MapTip_Test.Web\ClientBin\BIG_US_CITIES.kml</b> (this is 
            the same location as where the <b>SilverlightApplication1.xap</b> file gets created when the Visual 
            Studio Project gets built).
            <code title="BIG_US_CITIES.kml" description="BIG_US_CITIES.kml" lang="KML">
            &lt;?xml version="1.0" encoding="UTF-8"?&gt;
            &lt;kml xmlns="http://www.opengis.net/kml/2.2"&gt;
              &lt;Document&gt;
                &lt;name&gt;Big US Cities&lt;/name&gt;
                &lt;visibility&gt;1&lt;/visibility&gt;
                &lt;open&gt;1&lt;/open&gt;
                &lt;Placemark&gt;
                  &lt;name&gt;New York City&lt;/name&gt;
                  &lt;description&gt;The Big Apple&lt;/description&gt;
                  &lt;ExtendedData&gt;
                    &lt;Data name="Population"&gt;
                      &lt;value&gt;8,175,133&lt;/value&gt;
                    &lt;/Data&gt;
                  &lt;/ExtendedData&gt;
                  &lt;visibility&gt;true&lt;/visibility&gt;
                    &lt;open&gt;0&lt;/open&gt;
                      &lt;Point&gt;
                        &lt;coordinates&gt;-74.006,40.714,0&lt;/coordinates&gt;
                      &lt;/Point&gt;
                &lt;/Placemark&gt;
                &lt;Placemark&gt;
                  &lt;name&gt;Los Angeles&lt;/name&gt;
                  &lt;description&gt;City of Angles&lt;/description&gt;
                  &lt;ExtendedData&gt;
                    &lt;Data name="Population"&gt;
                      &lt;value&gt;3,792,621&lt;/value&gt;
                    &lt;/Data&gt;
                  &lt;/ExtendedData&gt;
                  &lt;visibility&gt;true&lt;/visibility&gt;
                    &lt;open&gt;0&lt;/open&gt;
                      &lt;Point&gt;
                        &lt;coordinates&gt;-118.243,34.052,0&lt;/coordinates&gt;
                      &lt;/Point&gt;
                &lt;/Placemark&gt;
                &lt;Placemark&gt;
                  &lt;name&gt;Chicago&lt;/name&gt;
                  &lt;description&gt;The Windy City&lt;/description&gt;
                  &lt;ExtendedData&gt;
                    &lt;Data name="Population"&gt;
                      &lt;value&gt;2,695,598&lt;/value&gt;
                    &lt;/Data&gt;
                  &lt;/ExtendedData&gt;
                  &lt;visibility&gt;true&lt;/visibility&gt;
                    &lt;open&gt;0&lt;/open&gt;
                      &lt;Point&gt;
                        &lt;coordinates&gt;-87.636,41.878,0&lt;/coordinates&gt;
                      &lt;/Point&gt;
                &lt;/Placemark&gt;
              &lt;/Document&gt;
            &lt;/kml&gt;
            </code>
            </item>
            <item>
            Use <b>Windows Explorer</b> to confirm you have a the 
            <b>C:\KML_TEST\SilverlightApplication1\SilverlightApplication1.Web\ClientBin\BIG_US_CITIES.kml</b> file created 
            (see the following screen shot):<br/>
            <img border="0" alt="Confirming the KML file has been created in the correct location." src="C:\ArcGIS\dotNET\API SDK\Main\ArcGISSilverlightSDK\LibraryReference\images\Client.Toolkit.DataSources.KmlLayer.MapTip1b.png"/>.
            </item>
            <item>
            Hit <b>F5</b> (or click the Start Debugging button) in Visual Studio to launch the Silverlight application in 
            Internet Explorer. Move you mouse cursor over the various red circles (i.e. Big US Cities) to display the MapTip 
            information.
            </item>
            </list>
            </example>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.KmlLayer.Graphics">
            <summary>
            Gets the graphics from all sublayers of this KML layer.
            </summary>
            <remarks>Only the graphics already downloaded are returned.</remarks>
            <value>The graphics.</value>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.KmlLayer.FullExtent">
            <summary>
            The full extent of the layer
            </summary>
            <value></value>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.KmlLayer.Name">
            <summary>
            Gets the name of the KML document.
            </summary>
            <value>The name.</value>
            <example>
            <para>
            <b>How to use:</b>
            </para>
            <para>
            When the application starts, click the Button to load a KmlLayer in the Map. Then click on any child 
            KmlLayer.Name in the ListBox (Note: there could be more than one depending on the KmlLayer loaded by the 
            Button). This will cause the Map to zoom to the general area of the child KmlLayer and display detailed 
            information (e.g. geometry type, symbology, and any attribute information).
            </para>
            <para>
            The XAML code in this example is used in conjunction with the code-behind (C# or VB.NET) to demonstrate
            the functionality.
            </para>
            <para>
            The following screen shot corresponds to the code example in this page.
            </para>
            <para>
            <img border="0" alt="Digging deep into the KmlLayer sub-layers to get detailed information like: geometry, symbology, and attributes." src="C:\ArcGIS\dotNET\API SDK\Main\ArcGISSilverlightSDK\LibraryReference\images\Client.Toolkit.DataSources.KmlLayer.Name.png"/>
            </para>
            <code title="Example XAML1" description="" lang="XAML">
            &lt;Grid x:Name="LayoutRoot"&gt;
              
              &lt;!-- Add a Map Control. --&gt;
              &lt;esri:Map Background="White" HorizontalAlignment="Left" Margin="356,144,0,0" Name="Map1" VerticalAlignment="Top" 
                        WrapAround="True" Height="204" Width="350" &gt;
                &lt;esri:Map.Layers&gt;
                  &lt;esri:LayerCollection&gt;
                  
                    &lt;!-- Add a background ArcGISTiledMapServiceLayer for visual reference. --&gt;
                    &lt;esri:ArcGISTiledMapServiceLayer 
                      Url="http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer" /&gt;
                      
                  &lt;/esri:LayerCollection&gt;
                &lt;/esri:Map.Layers&gt;
              &lt;/esri:Map&gt;
              
              &lt;!-- Add a Button that has the Click event wired up. The button will add a KmlLayer via the code-behind. --&gt;
              &lt;Button Content="Step 1 - Add a KmlLayer to the Map." Height="23" HorizontalAlignment="Left" 
                      Margin="0,144,0,0" Name="Button1" VerticalAlignment="Top" Width="350" Click="Button1_Click"/&gt;
              
              &lt;!-- Add a TextBlock to give the user instructions to click on the KmlLayer.Name to see detailed information. --&gt;
              &lt;TextBlock Height="67" HorizontalAlignment="Left" Margin="0,173,0,0" Name="TextBlock2" VerticalAlignment="Top" 
                         Width="350" TextWrapping="Wrap"
                         Text="Step 2 - Click on a sub KmlLayer.Name in the ListBox (below) to zoom to the extent of that sub KmlLayer and display it's detailed information like: geometry, symbology, and attributes." /&gt;
              
              &lt;!-- Add a ListBox. --&gt;
              &lt;ListBox Height="102" HorizontalAlignment="Left" Margin="0,246,0,0" Name="ListBox1" 
                       VerticalAlignment="Top" Width="350" SelectionChanged="ListBox1_SelectionChanged"/&gt;
              
              &lt;!-- Add a Textbox to display the KmlLayer sub-layers. --&gt;
              &lt;TextBox Height="246" HorizontalAlignment="Left" Margin="0,354,0,0" Name="TextBox1" VerticalAlignment="Top" 
                       Width="706" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" /&gt;
              
              &lt;!-- Provide the instructions on how to use the sample code. --&gt;
              &lt;TextBlock Height="138" HorizontalAlignment="Left" Name="TextBlock1" VerticalAlignment="Top" Width="706" 
                 TextWrapping="Wrap" Text="When the application starts, click the Button to load a KmlLayer in the Map.
                 Then click on any child KmlLayer.Name in the ListBox (Note: there could be more than one depending on the 
                 KmlLayer loaded by the Button). This will cause the Map to zoom to the general area of the child KmlLayer
                 and display detailed information (e.g. geometry type, symbology, and any attribute information)." /&gt;
            &lt;/Grid&gt;
            </code>
            <code title="Example CS1" description="" lang="CS">
            private void Button1_Click(object sender, System.Windows.RoutedEventArgs e)
            {
              // This function loads a KmlLayer.
              
              // Create a new KmlLayer object.
              ESRI.ArcGIS.Client.Toolkit.DataSources.KmlLayer theKmlLayer = new ESRI.ArcGIS.Client.Toolkit.DataSources.KmlLayer();
              
              // Set an initial ID.
              theKmlLayer.ID = "KML Sample Data";
              
              // Provide a Url for the KML/KMZ files to test.
              theKmlLayer.Url = new Uri("http://kml-samples.googlecode.com/svn/trunk/kml/ExtendedData/lincoln-park-gc-style.kml");
              
              // A few other public KML/KMZ layers to try too!
              //theKmlLayer.Url = new Uri("http://earthquake.usgs.gov/earthquakes/catalogs/eqs7day-age_src.kmz");
              //theKmlLayer.Url = new Uri("http://earthquake.usgs.gov/regional/nca/bayarea/kml/quads.kmz");
              
              // Need to use a ProxyUrl to access the data since it is not in our local network.
              theKmlLayer.ProxyUrl = "http://serverapps.esri.com/SilverlightDemos/ProxyPage/proxy.ashx";
              
              // Wire up an InitializationFailed Event Handler to catch any problems.
              theKmlLayer.InitializationFailed += kmlLayer1_InitializationFailed;
              
              // Wire up the Initialized Event Handler that will list all of the visible sub-layers.
              theKmlLayer.Initialized += kmlLayer1_Initialized;
              
              // Add the KmlLayer to the Map Control.
              Map1.Layers.Add(theKmlLayer);
            }
              
            private void kmlLayer1_InitializationFailed(object sender, EventArgs e)
            {
              // Display a MessageBox with Error information if there is a problem loading the KmlLayer. 
              ESRI.ArcGIS.Client.Layer theLayer = (ESRI.ArcGIS.Client.Layer)sender;
              MessageBox.Show("Error initializing layer: " + theLayer.InitializationFailure.Message);
            }
              
            private void kmlLayer1_Initialized(object sender, EventArgs e)
            {
              // Get the KmlLayer.
              ESRI.ArcGIS.Client.Toolkit.DataSources.KmlLayer theKmlLayer = (ESRI.ArcGIS.Client.Toolkit.DataSources.KmlLayer)sender;
              
              // Obtain the ChildLayers (i.e. GroupLayer) from the KmlLayer.
              ESRI.ArcGIS.Client.LayerCollection theLayerCollection = theKmlLayer.ChildLayers;
              
              // Loop through the ChildLayers and display the Layer.ID in the ListBox.
              foreach (ESRI.ArcGIS.Client.Layer theLayer in theLayerCollection)
              {
                string theLayerID = theLayer.ID;
                ListBox1.Items.Add(theLayerID);
                
                // TODO: You could add more logic here to recursively turn on the Visibility of the sub-Layers
                // so that they could be interrogated as well. Sometimes KML/KMZ authors intentionally turn off
                // the Visibility but they could have goody information that can be explored.
              }
            }
              
            private void ListBox1_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
            {
              // This function runs when the user clicks on the name of one of the visible sub-layers of the KmlLayer in the ListBox.
              
              // Clear out any previous information in the TextBox.
              TextBox1.Text = "";
              
              // Get the name of the KmlLayer sub-layer.
              string listbox_LayerName = ListBox1.SelectedItem.ToString();
              
              // Create a new StringBuilder to display information about the KmlLayer back to the user.
              System.Text.StringBuilder sb = new System.Text.StringBuilder();
              
              // Set an initial level in the KmlLayer sub-layer hierarchy.
              int level = 0;
              
              // Get the KmlLayer in the in the Map.
              ESRI.ArcGIS.Client.Toolkit.DataSources.KmlLayer theKmlLayer = (ESRI.ArcGIS.Client.Toolkit.DataSources.KmlLayer)(Map1.Layers[1]);
              
              // Add the top  level (Parent) information about the KmlLayer to the StringBuilder. 
              sb.Append("KmlLayer Name (Parent - Level " + level.ToString() + "): " + theKmlLayer.Name + Environment.NewLine);
              sb.Append("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@" + Environment.NewLine);
              sb.Append(Environment.NewLine);
              
              // Get the child sub-layers (i.e. GroupLayer) of the KmlLayer.
              ESRI.ArcGIS.Client.LayerCollection theLayerCollection = theKmlLayer.ChildLayers;
              
              // Loop through all of the child sub-layers.
              foreach (ESRI.ArcGIS.Client.Layer theLayer in theLayerCollection)
              {
                // Get the Layer.ID
                string theLayerID = theLayer.ID;
                
                // If we have a match with the what was chosen in the ListBox.
                if (theLayerID == listbox_LayerName)
                {
                  // Zoom to the FullExtent (and then expanded by 50%) of the Layer chosen in the Listbox .
                  // User TODO: Watch out for single point layers. Their extent will return an Envelope 
                  // that is a Point and not an area! More coding on your own.
                  Map1.Extent = theLayer.FullExtent.Expand(1.5);
                  
                  // Go into a recursive function that gets details about the sub-layer.
                  sb.Append(GoDeep(theLayer, 1)); // 1 is the intial level
                }
              }
              
              // Put the StringBuilder information into the TextBox. 
              TextBox1.Text = sb.ToString();
            }
              
            // A helper object to track which sub-layer object we are working on.
            public class SuperObject
            {
              public object theObjects;
              public int theLevel;
            }
              
            public string GoDeep(object theObject, int theLevel)
            {
              // This is a recursive function that gets details about a specific sub-layer.
              
              // If we go more than one time in this recursive function, the SuperObject helps
              // delinate which sub-layer we are operating on.
              if (theObject is SuperObject)
              {
                SuperObject theSuperObject = (SuperObject)theObject;
                theObject = theSuperObject.theObjects;
                theLevel = theSuperObject.theLevel;
              }
              
              // Create a new StringBuilder object to hold the detailed information about the sub-layer.
              Text.StringBuilder sb = new Text.StringBuilder();
              
              // The sub-layer that is passed into this recursive function could be any number of
              // Layer types. Branch into the correct If statement depending on what type of
              // object we are dealing with.
              
              if (theObject is ESRI.ArcGIS.Client.Toolkit.DataSources.KmlLayer)
              {
                // We have a KmlLayer type of object. Will need to recursively dig into more sub-layers 
                // in order to display details that we are interested in.
                
                // Get the KmlLayer.
                ESRI.ArcGIS.Client.Toolkit.DataSources.KmlLayer theKmlLayer = (ESRI.ArcGIS.Client.Toolkit.DataSources.KmlLayer)theObject;
                
                // Get the KmlLayer's child sub-layers.
                ESRI.ArcGIS.Client.LayerCollection theLayerCollection = theKmlLayer.ChildLayers;
                
                // Add some KmlLayer information into the StringBuilder.
                sb.Append("KmlLayer Name (Level " + theLevel.ToString() + "): " + theKmlLayer.ID + Environment.NewLine);
                sb.Append("##############################################" + Environment.NewLine);
                sb.Append(Environment.NewLine);
                
                // Loop through all of the sub-layers in the KmlLayer.
                foreach (object theObject2 in theLayerCollection)
                {
                  // Create a SuperObject to perform the recursive analysis.
                  SuperObject theRecursive_SuperObject = new SuperObject();
                  theRecursive_SuperObject.theObjects = theObject2;
                  theRecursive_SuperObject.theLevel = theLevel + 1;
                  
                  // Add detailed sub-layer information to the StringBuilder as a result of a recursive operation.
                  sb.Append(GoDeep(theRecursive_SuperObject, theLevel));
                }
              }
              else if (theObject is ESRI.ArcGIS.Client.GraphicsLayer)
              {
                // We have a GraphicsLayer type of object. 
                
                // Display detailed information about each Graphic in the GraphicsLayer
                ESRI.ArcGIS.Client.GraphicsLayer theGraphicsLayer = (ESRI.ArcGIS.Client.GraphicsLayer)theObject;
                string theGraphicsLayerID = theGraphicsLayer.ID;
                
                // Display overall information on the number of Graphics in the GraphicsLayer.
                sb.Append("GraphicsLayer (Level " + theLevel.ToString() + "): " + theGraphicsLayerID + Environment.NewLine);
                sb.Append("================================================" + Environment.NewLine);
                sb.Append("Number of Graphics: " + theGraphicsLayer.Graphics.Count.ToString() + Environment.NewLine);
                sb.Append(Environment.NewLine);
                
                // A counter for the number of Graphics in the GraphicsLayer.
                int graphicsCount = 0;
                
                // Loop through each Graphic in the GraphicsLayer.
                foreach (ESRI.ArcGIS.Client.Graphic theGraphic in theGraphicsLayer)
                {
                  // Append which Graphic we are operating on in the StringBuilder.
                  sb.Append("Graphic #" + graphicsCount.ToString() + Environment.NewLine);
                  
                  // Incriment the Graphics counter.
                  graphicsCount = graphicsCount + 1;
                  
                  // ---------------------------------------------------------------------------------------
                  
                  // Append the Geometry Type of the Graphic to the StringBuilder.
                  sb.Append("Geometry Type: " + theGraphic.Geometry.GetType().ToString() + Environment.NewLine);
                  
                  // Interrogate the specific Geometry Type of the Graphic to display it's coordinate information.
                  if (theGraphic.Geometry is ESRI.ArcGIS.Client.Geometry.MapPoint)
                  {
                    // We have a MapPoint. Display its coordinate information in the StringBuilder.
                    ESRI.ArcGIS.Client.Geometry.MapPoint theMapPoint = (ESRI.ArcGIS.Client.Geometry.MapPoint)theGraphic.Geometry;
                    sb.Append("Coordinates: " + theMapPoint.ToString() + Environment.NewLine);
                  }
                  else if (theGraphic.Geometry is ESRI.ArcGIS.Client.Geometry.Polyline)
                  {
                    // We have a Polyline. Display its coordinate information in the StringBuilder.
                    ESRI.ArcGIS.Client.Geometry.Polyline thePolyline = (ESRI.ArcGIS.Client.Geometry.Polyline)theGraphic.Geometry;
                    string polylineString = "";
                    System.Collections.ObjectModel.ObservableCollection&lt;ESRI.ArcGIS.Client.Geometry.PointCollection&gt; theObservableCollection_PointCollection = thePolyline.Paths;
                    foreach (ESRI.ArcGIS.Client.Geometry.PointCollection thePointCollection in theObservableCollection_PointCollection)
                    {
                      foreach (ESRI.ArcGIS.Client.Geometry.MapPoint theMapPoint in thePointCollection)
                      {
                        polylineString = polylineString + theMapPoint.ToString() + ", ";
                      }
                    }
                    sb.Append("Coordinates: " + polylineString + Environment.NewLine);
                  }
                  else if (theGraphic.Geometry is ESRI.ArcGIS.Client.Geometry.Polygon)
                  {
                    // We have a Polygon. Display its coordinate information in the StringBuilder.
                    ESRI.ArcGIS.Client.Geometry.Polygon thePolygon = (ESRI.ArcGIS.Client.Geometry.Polygon)theGraphic.Geometry;
                    string polygonString = "";
                    System.Collections.ObjectModel.ObservableCollection&lt;ESRI.ArcGIS.Client.Geometry.PointCollection&gt; theObservableCollection_PointCollection = thePolygon.Rings;
                    foreach (ESRI.ArcGIS.Client.Geometry.PointCollection thePointCollection in theObservableCollection_PointCollection)
                    {
                      foreach (ESRI.ArcGIS.Client.Geometry.MapPoint theMapPoint in thePointCollection)
                      {
                        polygonString = polygonString + theMapPoint.ToString() + ", ";
                      }
                    }
                    sb.Append("Coordinates: " + polygonString + Environment.NewLine);
                  }
                  
                  // -------------------------------------------------------------------------------------
                  
                  // Append the symbology of the Graphic into the StringBuilder.
                  ESRI.ArcGIS.Client.Symbols.Symbol theSymbol = theGraphic.Symbol;
                  sb.Append("Symbol Type: " + theSymbol.GetType().ToString() + Environment.NewLine);
                  
                  // -------------------------------------------------------------------------------------
                  
                  // Interrogate the Attributes of the Graphic.
                  
                  // Get the Dictionary of Attributes.
                  System.Collections.Generic.IDictionary&lt;string, object&gt; theAttributeDictionary = theGraphic.Attributes;
                  
                  // Get the Keys for the Dictionary.
                  System.Collections.Generic.ICollection&lt;string&gt; theAttributeKeys = theAttributeDictionary.Keys;
                  
                  // Loop through each Key in the Dictionary of Attributes. 
                  foreach (string theKey in theAttributeKeys)
                  {
                    // Get the Value of one Attribute. It could be any number of Types! 
                    object theValue = theAttributeDictionary[theKey];
                    
                    // Get the Type of the Value of the Attribute (we could have a more complex object than a String).
                    System.Type theType = theValue.GetType();
                    
                    // Interrogate the Value Type.
                    if (theValue is System.Collections.Generic.List&lt;ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlExtendedData&gt;)
                    {
                      // We have a List&lt;KmlExtendedData&gt; objects (most likely a result of the &lt;ExtendedData&gt; tag in KML).
                      
                      // Get the List&lt;KmlExtendedData&gt; object.
                      System.Collections.Generic.List&lt;ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlExtendedData&gt; theList = null;
                      theList = (System.Collections.Generic.List&lt;ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlExtendedData&gt;)theValue;
                      
                      // Loop through each KmlExtendedData object in the List&lt;KmlExtendedData&gt;.
                      foreach (ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlExtendedData oneKmlExtendedData in theList)
                      {
                        // Append the Attribute information of the KmlExtendedData into the StringBuilder.
                        sb.Append("AttributeKey: " + "KmlExtendedData.DisplayName" + ", AttributeValue: " + oneKmlExtendedData.DisplayName + Environment.NewLine);
                        sb.Append("AttributeKey: " + "KmlExtendedData.Name" + ", AttributeValue: " + oneKmlExtendedData.Name + Environment.NewLine);
                        sb.Append("AttributeKey: " + "KmlExtendedData.Value" + ", AttributeValue: " + oneKmlExtendedData.Value + Environment.NewLine);
                        sb.Append("----------------------------------------------------" + Environment.NewLine);
                      }
                    }
                    else if (theValue is string)
                    {
                      // We have a String object.
                      
                      // This could come from a number of KML tags (ex: &lt;atom:author&gt; 'name' attribute; &lt;atom:link&gt; 'href' attribute;
                      // &lt;atom:name&gt; 'href' attribute, &lt;BalloonStyle&gt;&lt;text&gt; information, &lt;description&gt; information; and &lt;name&gt; information).
                      sb.Append("AttributeKey: " + theKey + ", AttributeValue: " + theValue.ToString() + Environment.NewLine);
                      sb.Append("----------------------------------------------------" + Environment.NewLine);
                     }
                     else
                     {
                      // We have some other Type of object. TODO: User to interrogate further!
                     }
                  }  
                  sb.Append(Environment.NewLine);
                }
              }
              else if (theObject is ESRI.ArcGIS.Client.ElementLayer)
              {
                // We have an ElementLayer type of object. 
                
                // Display detailed information about each ElementLayer
                ESRI.ArcGIS.Client.ElementLayer theElementLayer = (ESRI.ArcGIS.Client.ElementLayer)theObject;
                
                // Append the overall information about the ElementLayer in the StringBuilder.
                string theElementLayerID = theElementLayer.ID;
                sb.Append("ElementLayer (Level " + theLevel.ToString() + "): " + theElementLayerID + Environment.NewLine);
                sb.Append("=============================================" + Environment.NewLine);
                sb.Append("Number of Elements: " + theElementLayer.Children.Count.ToString() + Environment.NewLine);
                
                // Append the Extent information about the ElementLayer int the Stirng Builder.
                ESRI.ArcGIS.Client.Geometry.Envelope elementLayerFullExtent = theElementLayer.FullExtent;
                sb.Append("FullExtent: " + elementLayerFullExtent.ToString() + Environment.NewLine);
                sb.Append(Environment.NewLine);
                
                // Loop through each UIElement in the ElementLayer.
                foreach (System.Windows.UIElement oneElement in theElementLayer.Children)
                {
                  // Append information about each UIElement in the StringBulder.
                  sb.Append("ElementType: " + oneElement.GetType().ToString() + Environment.NewLine);
                  sb.Append("Opacity: " + oneElement.Opacity.ToString() + Environment.NewLine);
                  sb.Append("Visibility: " + oneElement.Visibility.ToString() + Environment.NewLine);
                  sb.Append("Envelope: " + ESRI.ArcGIS.Client.ElementLayer.GetEnvelope(oneElement).ToString() + Environment.NewLine);
                  sb.Append(Environment.NewLine);
                }
              }
              // Return the StringBuilder information back to the caller.
              return sb.ToString();
            }
            </code>
            <code title="Example VB1" description="" lang="VB.NET">
            Private Sub Button1_Click(sender As System.Object, e As System.Windows.RoutedEventArgs)
              
              ' This function loads a KmlLayer.
              
              ' Create a new KmlLayer object.
              Dim theKmlLayer As New ESRI.ArcGIS.Client.Toolkit.DataSources.KmlLayer
              
              ' Set an initial ID.
              theKmlLayer.ID = "KML Sample Data"
              
              ' Provide a Url for the KML/KMZ files to test.
              theKmlLayer.Url = New Uri("http://kml-samples.googlecode.com/svn/trunk/kml/ExtendedData/lincoln-park-gc-style.kml")
              
              ' A few other public KML/KMZ layers to try too!
              'theKmlLayer.Url = New Uri("http://earthquake.usgs.gov/earthquakes/catalogs/eqs7day-age_src.kmz")
              'theKmlLayer.Url = New Uri("http://earthquake.usgs.gov/regional/nca/bayarea/kml/quads.kmz")
              
              ' Need to use a ProxyUrl to access the data since it is not in our local network.
              theKmlLayer.ProxyUrl = "http://serverapps.esri.com/SilverlightDemos/ProxyPage/proxy.ashx"
              
              ' Wire up an InitializationFailed Event Handler to catch any problems.
              AddHandler theKmlLayer.InitializationFailed, AddressOf kmlLayer1_InitializationFailed
              
              ' Wire up the Initialized Event Handler that will list all of the visible sub-layers.
              AddHandler theKmlLayer.Initialized, AddressOf kmlLayer1_Initialized
              
              ' Add the KmlLayer to the Map Control.
              Map1.Layers.Add(theKmlLayer)
              
            End Sub
            
            Private Sub kmlLayer1_InitializationFailed(sender As Object, e As EventArgs)
              
              ' Display a MessageBox with Error information if there is a problem loading the KmlLayer. 
              Dim theLayer As ESRI.ArcGIS.Client.Layer = CType(sender, ESRI.ArcGIS.Client.Layer)
              MessageBox.Show("Error initializing layer: " + theLayer.InitializationFailure.Message)
              
            End Sub
              
            Private Sub kmlLayer1_Initialized(sender As Object, e As EventArgs)
              
              ' Get the KmlLayer.
              Dim theKmlLayer As ESRI.ArcGIS.Client.Toolkit.DataSources.KmlLayer = CType(sender, ESRI.ArcGIS.Client.Toolkit.DataSources.KmlLayer)
              
              ' Obtain the ChildLayers (i.e. GroupLayer) from the KmlLayer.
              Dim theLayerCollection As ESRI.ArcGIS.Client.LayerCollection = theKmlLayer.ChildLayers
              
              ' Loop through the ChildLayers and display the Layer.ID in the ListBox.
              For Each theLayer As ESRI.ArcGIS.Client.Layer In theLayerCollection
                Dim theLayerID As String = theLayer.ID
                ListBox1.Items.Add(theLayerID)
                
                ' TODO: You could add more logic here to recursively turn on the Visibility of the sub-Layers
                ' so that they could be interrogated as well. Sometimes KML/KMZ authors intentionally turn off
                ' the Visibility but they could have goody information that can be explored.
              Next
              
            End Sub
            
            Private Sub ListBox1_SelectionChanged(sender As System.Object, e As System.Windows.Controls.SelectionChangedEventArgs)
              
              ' This function runs when the user clicks on the name of one of the visible sub-layers of the KmlLayer in the ListBox.
              
              ' Clear out any previous information in the TextBox.
              TextBox1.Text = ""
              
              ' Get the name of the KmlLayer sub-layer.
              Dim listbox_LayerName As String = ListBox1.SelectedItem.ToString
              
              ' Create a new StringBuilder to display information about the KmlLayer back to the user.
              Dim sb As New Text.StringBuilder
              
              ' Set an initial level in the KmlLayer sub-layer hierarchy.
              Dim level As Integer = 0
              
              ' Get the KmlLayer in the in the Map.
              Dim theKmlLayer As ESRI.ArcGIS.Client.Toolkit.DataSources.KmlLayer = CType(Map1.Layers(1), ESRI.ArcGIS.Client.Toolkit.DataSources.KmlLayer)
              
              ' Add the top  level (Parent) information about the KmlLayer to the StringBuilder. 
              sb.Append("KmlLayer Name (Parent - Level " + level.ToString + "): " + theKmlLayer.Name + vbCrLf)
              sb.Append("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@" + vbCrLf)
              sb.Append(vbCrLf)
              
              ' Get the child sub-layers (i.e. GroupLayer) of the KmlLayer.
              Dim theLayerCollection As ESRI.ArcGIS.Client.LayerCollection = theKmlLayer.ChildLayers
              
              ' Loop through all of the child sub-layers.
              For Each theLayer As ESRI.ArcGIS.Client.Layer In theLayerCollection
                
                ' Get the Layer.ID
                Dim theLayerID As String = theLayer.ID
                
                ' If we have a match with the what was chosen in the ListBox.
                If theLayerID = listbox_LayerName Then
                  
                  ' Zoom to the FullExtent (and then expanded by 50%) of the Layer chosen in the Listbox .
                  ' User TODO: Watch out for single point layers. Their extent will return an Envelope 
                  ' that is a Point and not an area! More coding on your own.
                  Map1.Extent = theLayer.FullExtent.Expand(1.5)
                  
                  ' Go into a recursive function that gets details about the sub-layer.
                  sb.Append(GoDeep(theLayer, 1)) ' 1 is the intial level
                  
                End If
              Next
              
              ' Put the StringBuilder information into the TextBox. 
              TextBox1.Text = sb.ToString
              
            End Sub
              
            ' A helper object to track which sub-layer object we are working on.
            Public Class SuperObject
              Public theObjects As Object
              Public theLevel As Integer
            End Class
              
            Public Function GoDeep(ByVal theObject As Object, ByVal theLevel As Integer) As String
              
              ' This is a recursive function that gets details about a specific sub-layer.
              
              ' If we go more than one time in this recursive function, the SuperObject helps
              ' delinate which sub-layer we are operating on.
              If TypeOf theObject Is SuperObject Then
                Dim theSuperObject As SuperObject = CType(theObject, SuperObject)
                theObject = theSuperObject.theObjects
                theLevel = theSuperObject.theLevel
              End If
              
              ' Create a new StringBuilder object to hold the detailed information about the sub-layer.
              Dim sb As New Text.StringBuilder
              
              ' The sub-layer that is passed into this recursive function could be any number of
              ' Layer types. Branch into the correct If statement depending on what type of
              ' object we are dealing with.
              
              If TypeOf theObject Is ESRI.ArcGIS.Client.Toolkit.DataSources.KmlLayer Then
                
                ' We have a KmlLayer type of object. Will need to recursively dig into more sub-layers 
                ' in order to display details that we are interested in.
                
                ' Get the KmlLayer.
                Dim theKmlLayer As ESRI.ArcGIS.Client.Toolkit.DataSources.KmlLayer = CType(theObject, ESRI.ArcGIS.Client.Toolkit.DataSources.KmlLayer)
                
                ' Get the KmlLayer's child sub-layers.
                Dim theLayerCollection As ESRI.ArcGIS.Client.LayerCollection = theKmlLayer.ChildLayers
                
                ' Add some KmlLayer information into the StringBuilder.
                sb.Append("KmlLayer Name (Level " + theLevel.ToString + "): " + theKmlLayer.ID + vbCrLf)
                sb.Append("##############################################" + vbCrLf)
                sb.Append(vbCrLf)
                
                ' Loop through all of the sub-layers in the KmlLayer.
                For Each theObject2 As Object In theLayerCollection
                  
                  ' Create a SuperObject to perform the recursive analysis.
                  Dim theRecursive_SuperObject As New SuperObject
                  theRecursive_SuperObject.theObjects = theObject2
                  theRecursive_SuperObject.theLevel = theLevel + 1
                  
                  ' Add detailed sub-layer information to the StringBuilder as a result of a recursive operation.
                  sb.Append(GoDeep(theRecursive_SuperObject, theLevel))
                  
                Next
                
              ElseIf TypeOf theObject Is ESRI.ArcGIS.Client.GraphicsLayer Then
                
                ' We have a GraphicsLayer type of object. 
                  
                ' Display detailed information about each Graphic in the GraphicsLayer
                Dim theGraphicsLayer As ESRI.ArcGIS.Client.GraphicsLayer = CType(theObject, ESRI.ArcGIS.Client.GraphicsLayer)
                Dim theGraphicsLayerID As String = theGraphicsLayer.ID
                
                ' Display overall information on the number of Graphics in the GraphicsLayer.
                sb.Append("GraphicsLayer (Level " + theLevel.ToString + "): " + theGraphicsLayerID + vbCrLf)
                sb.Append("================================================" + vbCrLf)
                sb.Append("Number of Graphics: " + theGraphicsLayer.Graphics.Count.ToString + vbCrLf)
                sb.Append(vbCrLf)
                
                ' A counter for the number of Graphics in the GraphicsLayer.
                Dim graphicsCount As Integer = 0
                
                ' Loop through each Graphic in the GraphicsLayer.
                For Each theGraphic As ESRI.ArcGIS.Client.Graphic In theGraphicsLayer
                  
                  ' Append which Graphic we are operating on in the StringBuilder.
                  sb.Append("Graphic #" + graphicsCount.ToString + vbCrLf)
                  
                  ' Incriment the Graphics counter.
                  graphicsCount = graphicsCount + 1
                  
                  ' ---------------------------------------------------------------------------------------
                  
                  ' Append the Geometry Type of the Graphic to the StringBuilder.
                  sb.Append("Geometry Type: " + theGraphic.Geometry.GetType.ToString + vbCrLf)
                  
                  ' Interrogate the specific Geometry Type of the Graphic to display it's coordinate information.
                  If TypeOf theGraphic.Geometry Is ESRI.ArcGIS.Client.Geometry.MapPoint Then
                    
                    ' We have a MapPoint. Display its coordinate information in the StringBuilder.
                    Dim theMapPoint As ESRI.ArcGIS.Client.Geometry.MapPoint = CType(theGraphic.Geometry, ESRI.ArcGIS.Client.Geometry.MapPoint)
                    sb.Append("Coordinates: " + theMapPoint.ToString + vbCrLf)
                    
                  ElseIf TypeOf theGraphic.Geometry Is ESRI.ArcGIS.Client.Geometry.Polyline Then
                    
                    ' We have a Polyline. Display its coordinate information in the StringBuilder.
                    Dim thePolyline As ESRI.ArcGIS.Client.Geometry.Polyline = CType(theGraphic.Geometry, ESRI.ArcGIS.Client.Geometry.Polyline)
                    Dim polylineString As String = ""
                    Dim theObservableCollection_PointCollection As System.Collections.ObjectModel.ObservableCollection(Of ESRI.ArcGIS.Client.Geometry.PointCollection) = thePolyline.Paths
                    For Each thePointCollection As ESRI.ArcGIS.Client.Geometry.PointCollection In theObservableCollection_PointCollection
                      For Each theMapPoint As ESRI.ArcGIS.Client.Geometry.MapPoint In thePointCollection
                        polylineString = polylineString + theMapPoint.ToString + ", "
                      Next
                    Next
                    sb.Append("Coordinates: " + polylineString + vbCrLf)
                    
                  ElseIf TypeOf theGraphic.Geometry Is ESRI.ArcGIS.Client.Geometry.Polygon Then
                    
                    ' We have a Polygon. Display its coordinate information in the StringBuilder.
                    Dim thePolygon As ESRI.ArcGIS.Client.Geometry.Polygon = CType(theGraphic.Geometry, ESRI.ArcGIS.Client.Geometry.Polygon)
                    Dim polygonString As String = ""
                    Dim theObservableCollection_PointCollection As System.Collections.ObjectModel.ObservableCollection(Of ESRI.ArcGIS.Client.Geometry.PointCollection) = thePolygon.Rings
                    For Each thePointCollection As ESRI.ArcGIS.Client.Geometry.PointCollection In theObservableCollection_PointCollection
                      For Each theMapPoint As ESRI.ArcGIS.Client.Geometry.MapPoint In thePointCollection
                        polygonString = polygonString + theMapPoint.ToString + ", "
                      Next
                    Next
                    sb.Append("Coordinates: " + polygonString + vbCrLf)
                    
                  End If
                  
                  ' -------------------------------------------------------------------------------------
                  
                  ' Append the symbology of the Graphic into the StringBuilder.
                  Dim theSymbol As ESRI.ArcGIS.Client.Symbols.Symbol = theGraphic.Symbol
                  sb.Append("Symbol Type: " + theSymbol.GetType.ToString + vbCrLf)
                  
                  ' -------------------------------------------------------------------------------------
                  
                  ' Interrogate the Attributes of the Graphic.
                  
                  ' Get the Dictionary of Attributes.
                  Dim theAttributeDictionary As System.Collections.Generic.IDictionary(Of String, Object) = theGraphic.Attributes
                  
                  ' Get the Keys for the Dictionary.
                  Dim theAttributeKeys As System.Collections.Generic.ICollection(Of String) = theAttributeDictionary.Keys
                  
                  ' Loop through each Key in the Dictionary of Attributes. 
                  For Each theKey As String In theAttributeKeys
                    
                    ' Get the Value of one Attribute. It could be any number of Types! 
                    Dim theValue As Object = theAttributeDictionary.Item(theKey)
                     ' Get the Type of the Value of the Attribute (we could have a more complex object than a String).
                    Dim theType As System.Type = theValue.GetType
                      
                    ' Interrogate the Value Type.
                    If TypeOf theValue Is System.Collections.Generic.List(Of ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlExtendedData) Then
                      
                      ' We have a List(Of KmlExtendedData) objects (most likely a result of the &lt;ExtendedData&gt; tag in KML).
                      
                      ' Get the List(Of KmlExtendedData) object.
                      Dim theList As System.Collections.Generic.List(Of ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlExtendedData)
                      theList = CType(theValue, System.Collections.Generic.List(Of ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlExtendedData))
                      
                      ' Loop through each KmlExtendedData object in the List(Of KmlExtendedData).
                      For Each oneKmlExtendedData As ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlExtendedData In theList
                      
                        ' Append the Attribute information of the KmlExtendedData into the StringBuilder.
                        sb.Append("AttributeKey: " + "KmlExtendedData.DisplayName" + ", AttributeValue: " + oneKmlExtendedData.DisplayName + vbCrLf)
                        sb.Append("AttributeKey: " + "KmlExtendedData.Name" + ", AttributeValue: " + oneKmlExtendedData.Name + vbCrLf)
                        sb.Append("AttributeKey: " + "KmlExtendedData.Value" + ", AttributeValue: " + oneKmlExtendedData.Value + vbCrLf)
                        sb.Append("----------------------------------------------------" + vbCrLf)
                        
                      Next
                      
                    ElseIf TypeOf theValue Is String Then
                      
                      ' We have a String object.
                      
                      ' This could come from a number of KML tags (ex: &lt;atom:author&gt; 'name' attribute; &lt;atom:link&gt; 'href' attribute;
                      ' &lt;atom:name&gt; 'href' attribute, &lt;BalloonStyle&gt;&lt;text&gt; information, &lt;description&gt; information; and &lt;name&gt; information).
                      sb.Append("AttributeKey: " + theKey + ", AttributeValue: " + theValue.ToString + vbCrLf)
                      sb.Append("----------------------------------------------------" + vbCrLf)
                      
                    Else
                      
                      ' We have some other Type of object. TODO: User to interrogate further!
                      
                    End If
                  Next
                    
                  sb.Append(vbCrLf)
                  
                Next
                
              ElseIf TypeOf theObject Is ESRI.ArcGIS.Client.ElementLayer Then
                
                ' We have an ElementLayer type of object. 
                
                ' Display detailed information about each ElementLayer
                Dim theElementLayer As ESRI.ArcGIS.Client.ElementLayer = CType(theObject, ESRI.ArcGIS.Client.ElementLayer)
                
                ' Append the overall information about the ElementLayer in the StringBuilder.
                Dim theElementLayerID As String = theElementLayer.ID
                sb.Append("ElementLayer (Level " + theLevel.ToString + "): " + theElementLayerID + vbCrLf)
                sb.Append("=============================================" + vbCrLf)
                sb.Append("Number of Elements: " + theElementLayer.Children.Count.ToString + vbCrLf)
                
                ' Append the Extent information about the ElementLayer int the Stirng Builder.
                Dim elementLayerFullExtent As ESRI.ArcGIS.Client.Geometry.Envelope = theElementLayer.FullExtent
                sb.Append("FullExtent: " + elementLayerFullExtent.ToString + vbCrLf)
                sb.Append(vbCrLf)
                
                ' Loop through each UIElement in the ElementLayer.
                For Each oneElement As System.Windows.UIElement In theElementLayer.Children
                  
                  ' Append information about each UIElement in the StringBulder.
                  sb.Append("ElementType: " + oneElement.GetType.ToString + vbCrLf)
                  sb.Append("Opacity: " + oneElement.Opacity.ToString + vbCrLf)
                  sb.Append("Visibility: " + oneElement.Visibility.ToString + vbCrLf)
                  sb.Append("Envelope: " + ESRI.ArcGIS.Client.ElementLayer.GetEnvelope(oneElement).ToString + vbCrLf)
                  sb.Append(vbCrLf)
                  
                Next
            
              End If
            
              ' Return the StringBuilder information back to the caller.
              Return sb.ToString
            
            End Function
            </code>
            </example>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.KmlLayer.ProjectionService">
            <summary>
            Gets or sets the projection service used for projecting geometry in the data source
            to the map's spatial reference. 
            </summary>
            <remarks>
            If you are projecting between WGS84 Geographic coordinates (SRID=4326) and WebMercator
            or your source data is in the same projection as the map it's being displayed on, 
            there is no need to set this property.
            </remarks>
            <value>The projection service.</value>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.KmlLayer.VisibleLayers">
            <summary>
            Gets or sets the names of the KML sublayers that have to be initialized as visible.
            If this property is not set, the visibility defined in the KML document is used.
            </summary>
            <remarks>The wildcard "*" allows to set all descendant layers as visible.
            <para>
            For examples:
            <list type="bullet">
            <item>
            VisibleLayers="*" sets all sublayers as visible</item>
            <item>
            VisibleLayers="folder/*" set all sublayers under 'folder' as visible</item>
            <item>
            VisibleLayers="folder,folder/*" sets 'folder' and all its sublayers as visible</item>
            </list>
            </para>
            <para>Note that this list is a configuration property and doesn't return the sublayers that are currently visible.
            To know whether a sublayer is currently visible, you have to go through the layers hierarchy and get the current visibility of the layer.
            </para>
            </remarks>
            <value>The visible layers enumeration.</value>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.KmlLayer.RefreshInterval">
            <summary>
            Gets or sets the refresh interval.
            </summary>
            <value>The refresh interval.</value>
        </member>
        <member name="T:ESRI.ArcGIS.Client.Toolkit.DataSources.KmlLayerContext">
            <summary>
            Class with infos needed to be able to refresh and reparse a KML layer
            </summary>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.KmlLayerContext.Element">
            <summary>
            Gets or sets the element (document, folder or NetworkLink) corresponding to the KML layer..
            </summary>
            <value>The element.</value>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.KmlLayerContext.AtomAuthor">
            <summary>
            Gets or sets the atom author of the XElement or inherited from parents.
            </summary>
            <value>The atom author.</value>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.KmlLayerContext.AtomHref">
            <summary>
            Gets or sets the atom href of the XElement or inherited from parents.
            </summary>
            <value>The atom href.</value>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.WebMercatorProjectionService.Project(ESRI.ArcGIS.Client.Geometry.Geometry,ESRI.ArcGIS.Client.Geometry.SpatialReference)">
            <summary>
            Projects the specified geometry.
            </summary>
            <param name="geometry">The geometry.</param>
            <param name="outSpatialReference">The out spatial reference.</param>
            <returns></returns>
        </member>
        <member name="T:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlPlaceMarkerSymbol">
            <summary>
            Point symbol using a bitmap image for symbol
            </summary>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlPlaceMarkerSymbol.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlPlaceMarkerSymbol"/> class.
            </summary>
        </member>
        <member name="F:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlPlaceMarkerSymbol.FillProperty">
            <summary>
            Identifies the <see cref="P:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlPlaceMarkerSymbol.Fill"/> dependency property.
            </summary>
        </member>
        <member name="F:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlPlaceMarkerSymbol.WidthProperty">
            <summary>
            Identifies the <see cref="P:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlPlaceMarkerSymbol.Width"/> dependency property.
            </summary>
        </member>
        <member name="F:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlPlaceMarkerSymbol.HeightProperty">
            <summary>
            Identifies the <see cref="P:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlPlaceMarkerSymbol.Height"/> dependency property.
            </summary>
        </member>
        <member name="F:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlPlaceMarkerSymbol.OpacityProperty">
            <summary>
            Identifies the <see cref="P:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlPlaceMarkerSymbol.Opacity"/> dependency property.
            </summary>
        </member>
        <member name="F:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlPlaceMarkerSymbol.HeadingProperty">
            <summary>
            Identifies the <see cref="P:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlPlaceMarkerSymbol.Heading"/> dependency property.
            </summary>
        </member>
        <member name="F:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlPlaceMarkerSymbol.ScaleProperty">
            <summary>
            Identifies the <see cref="P:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlPlaceMarkerSymbol.Scale"/> dependency property.
            </summary>
        </member>
        <member name="F:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlPlaceMarkerSymbol.TranslateXProperty">
            <summary>
            Identifies the <see cref="P:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlPlaceMarkerSymbol.TranslateX"/> dependency property.
            </summary>
        </member>
        <member name="F:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlPlaceMarkerSymbol.TranslateYProperty">
            <summary>
            Identifies the <see cref="P:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlPlaceMarkerSymbol.TranslateY"/> dependency property.
            </summary>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlPlaceMarkerSymbol.Fill">
            <summary>
            Gets or sets Fill.
            </summary>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlPlaceMarkerSymbol.Width">
            <summary>
            Gets or sets the width of the image.
            </summary>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlPlaceMarkerSymbol.Height">
            <summary>
            Gets or sets the height of the image.
            </summary>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlPlaceMarkerSymbol.Opacity">
            <summary>
            Gets or sets the opacity of the image.
            </summary>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlPlaceMarkerSymbol.Heading">
            <summary>
            Gets or sets the heading of the image.
            </summary>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlPlaceMarkerSymbol.Scale">
            <summary>
            Gets or sets the scale of the image.
            </summary>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlPlaceMarkerSymbol.TranslateX">
            <summary>
            Gets or sets the translation along the X axis of the image.
            </summary>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlPlaceMarkerSymbol.TranslateY">
            <summary>
            Gets or sets the translation along the X axis of the image.
            </summary>
        </member>
        <member name="T:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlToFeatureDefinition">
            <summary>
            Converts a KML document into a FeatureDefinition.
            </summary>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlToFeatureDefinition.#ctor(System.Uri,System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlToFeatureDefinition"/> class.
            </summary>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlToFeatureDefinition.Convert(ESRI.ArcGIS.Client.Toolkit.DataSources.KmlLayerContext)">
            <summary>
            Takes features in the KML element and converts them into equivalent features
            and adds them to the FeatureDefinition.
            Only the direct children of the KML element are converted.
            </summary>
            <param name="context">Context containing the XElement with the KML definition to be converted.</param>
            <returns></returns>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlToFeatureDefinition.DownloadStyleAsync(System.String,System.Net.ICredentials,System.Action{ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KMLStyle},System.Security.Cryptography.X509Certificates.X509Certificate)">
            <summary>
            Downloads KML file containing style, extracts style and creates feature definitions.
            </summary>
            <param name="styleUrl">Style id to locate in file.</param>
            <param name="credentials">The credentials.</param>
            <param name="callback">Callback to execture with the downloaded style</param>
            <param name="clientCertificate">The client certificate.</param>
            <returns></returns>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlToFeatureDefinition.StyleDownloaded(System.Object,System.Net.OpenReadCompletedEventArgs)">
            <summary>
            Event handler invoked when an external KML file containing a style definition has been downloaded.
            </summary>
            <param name="sender">Sending object.</param>
            <param name="e">Event arguments including error information and the input stream.</param>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlToFeatureDefinition.GetKmzContents(ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.ZipFile)">
            <summary>
            Processes each file in the ZIP stream, storing images in a dictionary and load the KML contents
            into an XDocument.
            </summary>
            <param name="zipFile">Decompressed stream from KMZ.</param>
            <returns>XDocument containing KML content from the KMZ source.</returns>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlToFeatureDefinition.GetFeatureType(System.Xml.Linq.XElement)">
            <summary>
            Extracts the feature element from the Placemark.
            </summary>
            <param name="element">Placemark node that may contain a supported feature type node.</param>
            <returns>XElement node containing a supported feature type definition.</returns>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlToFeatureDefinition.ExtractLatLonBox(ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KMLStyle,System.Xml.Linq.XElement)">
            <summary>
            Extracts a polygon from the input element and applies style information to the placemark descriptor.
            </summary>
            <param name="kmlStyle">KML Style information.</param>
            <param name="geomElement">Polygon geometry information.</param>
            <returns>A PlacemarkDescriptor object representing the feature.</returns>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlToFeatureDefinition.ExtractEnvelope(System.Xml.Linq.XElement)">
            <summary>
            Extracts an envelope from the input element.
            </summary>
            <param name="geomElement">LatLonBox geometry information.</param>
            <returns>An envelope.</returns>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlToFeatureDefinition.ExtractPolygon(ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KMLStyle,System.Xml.Linq.XElement)">
            <summary>
            Extracts a polygon from the input element and applies style information to the placemark descriptor.
            </summary>
            <param name="kmlStyle">KML Style information.</param>
            <param name="geomElement">Polygon geometry information.</param>
            <returns>A PlacemarkDescriptor object representing the feature.</returns>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlToFeatureDefinition.ExtractLinearRing(ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KMLStyle,System.Xml.Linq.XElement)">
            <summary>
            Extracts a linear ring from the input element and applies style information to the placemark descriptor.
            </summary>
            <param name="kmlStyle">KML Style information.</param>
            <param name="geomElement">Linear ring geometry information.</param>
            <returns>A PlacemarkDescriptor object representing the feature.</returns>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlToFeatureDefinition.ExtractPolyLine(ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KMLStyle,System.Xml.Linq.XElement)">
            <summary>
            Extracts a polyline from the input element and applies style information to the placemark descriptor.
            </summary>
            <param name="kmlStyle">KML Style information.</param>
            <param name="line">Polyline geometry information.</param>
            <returns>A PlacemarkDescriptor object representing the feature.</returns>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlToFeatureDefinition.ExtractPoint(ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KMLStyle,System.Xml.Linq.XElement)">
            <summary>
            Extracts a point from the input element and applies style information to the placemark descriptor.
            </summary>
            <param name="kmlStyle">KML Style information.</param>
            <param name="point">Point geometry information.</param>
            <returns>A PlacemarkDescriptor object representing the feature.</returns>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlToFeatureDefinition.ExtractRing(System.Xml.Linq.XElement)">
            <summary>
            Extracts a collection of points from a LinearRing definition.
            </summary>
            <param name="boundary">Outer or Inner boundary XElement object.</param>
            <returns>A PointCollection containing MapPoint objects.</returns>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlToFeatureDefinition.ExtractCoordinates(System.Xml.Linq.XElement)">
            <summary>
            Extracts the X and Y values from a comma delimited string containing multiple coordinates.
            </summary>
            <param name="coordinates">Comma delimited string containing multiple coordinate groups.</param>
            <returns>A PointCollection containing MapPoint objects.</returns>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlToFeatureDefinition.ExtractCoordinate(System.String)">
            <summary>
            Extracts the X and Y values from a comma delimited string containing a single coordinate.
            </summary>
            <param name="coordinate">Comma delimited string containing X, Y and Z values.</param>
            <returns>A MapPoint object with X and Y coordinate values assigned.</returns>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlToFeatureDefinition.ExtractRegion(System.Xml.Linq.XElement)">
            <summary>
            Extracts the region from a KML feature (folder, document, networklink, placemark or groundoverlay)
            </summary>
            <param name="feature">The feature.</param>
            <returns></returns>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlToFeatureDefinition.GetStyleMapAsync(System.Xml.Linq.XElement,System.Xml.Linq.XDocument,System.Net.ICredentials,System.Action{ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KMLStyle},System.Security.Cryptography.X509Certificates.X509Certificate)">
            <summary>
            Gets the 'normal' style of a style map.
            Getting this style may need recursive download.
            When the style is ready -> execute the callback.
            </summary>
            <remarks>
            The 'highlight' style is not used by the KmlLayer.
            </remarks>
            <param name="styleMap">The style map element to parse.</param>
            <param name="xDoc">The xDocument the style map is part of.</param>
            <param name="credentials">The credentials.</param>
            <param name="callback">The callback to call when the style is downloaded (if needed).</param>
            <param name="clientCertificate">The client certificate.</param>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlToFeatureDefinition.GetStyle(System.Xml.Linq.XElement,ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KMLStyle)">
            <summary>
            Constructs a KMLStyle object that represents KML style contained in the input XElement.
            </summary>
            <param name="style">XElement containing KML style definition.</param>
            <param name="kmlStyle">KMLStyle object representing input style.</param>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlToFeatureDefinition.StringToBool(System.String)">
            <summary>
            Converts a string containing an integer value into a boolean.
            </summary>
            <param name="s">String containing boolean in numeric format.</param>
            <returns>Boolean value extracted from the input string.</returns>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlToFeatureDefinition.GetColorFromHexString(System.String)">
            <summary>
            Converts hexadecimal color notation into equivalent Silverlight Color.
            </summary>
            <param name="s">Input color string in hexadecimal format.</param>
            <returns>Color object representing input string.</returns>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlToFeatureDefinition.ProxyUrl">
            <summary>
            Optional. Gets or sets the URL to a proxy service that brokers Web requests between the Silverlight 
            client and a KML file.  Use a proxy service when the KML file is not hosted on a site that provides
            a cross domain policy file (clientaccesspolicy.xml or crossdomain.xml).
            </summary>
            <value>The Proxy URL string.</value>
        </member>
        <member name="T:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlToFeatureDefinition.DownloadStyleState">
            <summary>
            This stores the state of the currently processed KML feature while its style information is
            downloaded from an external source.
            </summary>
        </member>
        <member name="T:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlToFeatureDefinition.WaitHelper">
            <summary>
            Helper class to wait for the end of styles downloads
            </summary>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.KmlToFeatureDefinition.WaitHelper.Wait">
            <summary>
            Waits for the styles.
            </summary>
        </member>
        <member name="T:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.SurrogateBindRotate">
            <summary>
            *FOR INTERNAL USE ONLY*
            </summary>
            <remarks>
            Surrogate binder class for setting the angle/heading.
            </remarks>
            <exclude/>
        </member>
        <member name="F:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.SurrogateBindRotate.AngleProperty">
            <summary>
            Dependency property to assign the heading/angle of the place marker symbol.
            </summary>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.SurrogateBindRotate.GetAngle(System.Windows.DependencyObject)">
            <summary>
            Get function for angle property.
            </summary>
            <param name="d">Dependency object.</param>
            <returns>The current angle/heading value.</returns>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.SurrogateBindRotate.SetAngle(System.Windows.DependencyObject,System.Double)">
            <summary>
            Set function for angle property.
            </summary>
            <param name="d">Dependency object.</param>
            <param name="value">The value to assign as the angle/heading.</param>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.SurrogateBindRotate.OnAngleChanged(System.Windows.DependencyObject,System.Windows.DependencyPropertyChangedEventArgs)">
            <summary>
            Called when the attached property is bound/changed.
            </summary>
            <param name="d">Dependency object.</param>
            <param name="e">Event arguments.</param>
        </member>
        <member name="T:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.SurrogateBindScale">
            <summary>
            *FOR INTERNAL USE ONLY*
            </summary>
            <remarks>
            Surrogate binder class for setting the scale.
            </remarks>
            <exclude/>
        </member>
        <member name="F:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.SurrogateBindScale.ScaleProperty">
            <summary>
            Dependency property to assign the scale of the place marker symbol.
            </summary>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.SurrogateBindScale.GetScale(System.Windows.DependencyObject)">
            <summary>
            Get function for scale property.
            </summary>
            <param name="d">Dependency object.</param>
            <returns>The current scale value.</returns>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.SurrogateBindScale.SetScale(System.Windows.DependencyObject,System.Double)">
            <summary>
            Set function for scale property.
            </summary>
            <param name="d">Dependency object.</param>
            <param name="value">The value to assign as the scale.</param>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.SurrogateBindScale.OnScaleChanged(System.Windows.DependencyObject,System.Windows.DependencyPropertyChangedEventArgs)">
            <summary>
            Called when the attached property is bound/changed.
            </summary>
            <param name="d">Dependency object.</param>
            <param name="e">Event arguments.</param>
        </member>
        <member name="T:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.SurrogateBindTranslateX">
            <summary>
            *FOR INTERNAL USE ONLY*
            </summary>
            <remarks>
            Surrogate binder class for setting the translation along the X axis.
            </remarks>
            <exclude/>
        </member>
        <member name="F:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.SurrogateBindTranslateX.TranslateXProperty">
            <summary>
            Dependency property to assign the translation along the X axis of the place marker symbol.
            </summary>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.SurrogateBindTranslateX.GetTranslateX(System.Windows.DependencyObject)">
            <summary>
            Get function for translate X property.
            </summary>
            <param name="d">Dependency object.</param>
            <returns>The current translation value.</returns>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.SurrogateBindTranslateX.SetTranslateX(System.Windows.DependencyObject,System.Double)">
            <summary>
            Set function for translate X property.
            </summary>
            <param name="d">Dependency object.</param>
            <param name="value">The value to assign as the translation.</param>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.SurrogateBindTranslateX.OnTranslateXChanged(System.Windows.DependencyObject,System.Windows.DependencyPropertyChangedEventArgs)">
            <summary>
            Called when the attached property is bound/changed.
            </summary>
            <param name="d">Dependency object.</param>
            <param name="e">Event arguments.</param>
        </member>
        <member name="T:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.SurrogateBindTranslateY">
            <summary>
            *FOR INTERNAL USE ONLY*
            </summary>
            <remarks>
            Surrogate binder class for setting the translation along the X axis.
            </remarks>
            <exclude/>
        </member>
        <member name="F:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.SurrogateBindTranslateY.TranslateYProperty">
            <summary>
            Dependency property to assign the translation along the Y axis of the place marker symbol.
            </summary>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.SurrogateBindTranslateY.GetTranslateY(System.Windows.DependencyObject)">
            <summary>
            Get function for translate Y property.
            </summary>
            <param name="d">Dependency object.</param>
            <returns>The current translation value.</returns>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.SurrogateBindTranslateY.SetTranslateY(System.Windows.DependencyObject,System.Double)">
            <summary>
            Set function for translate Y property.
            </summary>
            <param name="d">Dependency object.</param>
            <param name="value">The value to assign as the translation.</param>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.SurrogateBindTranslateY.OnTranslateYChanged(System.Windows.DependencyObject,System.Windows.DependencyPropertyChangedEventArgs)">
            <summary>
            Called when the attached property is bound/changed.
            </summary>
            <param name="d">Dependency object.</param>
            <param name="e">Event arguments.</param>
        </member>
        <member name="T:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.ZipFile">
            <summary>
            Simple unzip utility leveraging Silverlight's GetResourceStream
            </summary>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.ZipFile.GetFileStream(System.String)">
            <summary>
            Gets the file stream for the specified filename.
            </summary>
            <param name="filename">The filename.</param>
            <returns></returns>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.ZipFile.Dispose">
            <summary>
            Performs application-defined tasks associated with freeing, releasing,
            or resetting unmanaged resources.
            </summary>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.Kml.ZipFile.EntryFileNames">
            <summary>
            Gets the name of the files in zip file.
            </summary>
            <returns></returns>
        </member>
        <member name="T:ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer">
            <summary>
            A layer that conforms to the <a href="http://www.openstreetmap.org">OpenStreetMap</a> standard. An 
            OpenStreetMapLayer is a cached service that accesses pre-created tiles from a cache on a server's hard 
            drive instead of dynamically rendering images.
            </summary>
            <remarks>
            <para>
            <a href="http://www.openstreetmap.org">OpenStreetMap</a> is an organization that provides free world-wide 
            tiled based map services to the public. OpenStreetMapLayers are specialized layers that consume web 
            services using the OpenStreetMap specification. A tiled map service means that map images are pre-created 
            on a server to improve drawing performance in a client application. Because the images are pre-created 
            cached tiles, re-projection on-the-fly to a different 
            <see cref="T:ESRI.ArcGIS.Client.Geometry.SpatialReference">SpatialReference</see> is not possible.
            </para>
            <para>
            By generating pre-created cached tiles and storing them in an optimized file structure on a server using 
            the OpenStreetMap specification, client applications can see improved draw times of geographic phenomena. 
            This performance increase comes as a trade-off of not having the flexibility to dynamically change the 
            drawing of geographic phenomena on-the-fly. This means that an OpenStreetMapLayer does not have Properties 
            like dynamic map service layers such as the 
            <see cref="T:ESRI.ArcGIS.Client.ArcGISDynamicMapServiceLayer">ArcGISDynamicMapServiceLayer</see> or a 
            <see cref="T:ESRI.ArcGIS.Client.FeatureLayer">FeatureLayer</see> have for things such as: LayerDefinition, 
            Where, TimeExtent, and/or VisibleLayers which restrict which features are returned.
            </para>
            <para>
            A call to the OpenStreetMapLayer is Asynchronous. As a result, this means that obtaining information 
            (i.e. get/Read) for the various Properties of an OpenStreetMapLayer should occur in the 
            <see cref="E:ESRI.ArcGIS.Client.Layer.Initialized">Initialized</see> Event or any time after the 
            Initialized Event occurs. This ensures that information retrieved about the OpenStreetMapLayer has been 
            obtained after a complete round trip from the server. Do not be tempted to try and access 
            OpenStreetMapLayer Property information from generic application Events like: 
            MainPage.Loaded
            
            
            or the Constructor, etc. as the OpenStreetMapLayer has not been Initialized and erroneous information 
            will be returned. Likewise, OpenStreetMapLayer Methods should not be invoked until after the 
            OpenStreetMapLayer Initialized Event has fired or from within the Initialized Event to avoid erroneous 
            results.
            </para>
            <para>
            It is highly recommended to use the OpenStreetMapLayer 
            <see cref="E:ESRI.ArcGIS.Client.Layer.InitializationFailed">InitializationFailed</see> Event to test for 
            valid data being returned from the Server. Some common reasons for an OpenStreetMapLayer failing to 
            initialize include the server being down or an incorrect Url was specified in the 
            <see cref="P:ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer.TileServers">OpenStreetMapLayer.TileServers</see> 
            Property. If proper error handling is not done in the OpenStreetMapLayer InitializationFailed Event, an 
            'Unhandled Exception' error message will be thrown by Visual Studio causing undesirable application 
            termination.
            </para>
            <para>
            It is only required to create a new instance of an OpenStreetMapLayer and then add it to the 
            <see cref="P:ESRI.ArcGIS.Client.Map.Layers">Map.Layers</see> Property to display a default 
            OpenStreetMapLayer. The reason for this is that the internals of the OpenStreetMapLayer constructor 
            automatically uses an internal Url to a web service provided by the OpenStreetMap organization. So 
            the following is an XAML example of all that is needed to create a default OpenStreetMapLayer:
            </para>
            <code language="XAML">
            &lt;esri:Map x:Name="MyMap"&gt;
              &lt;esri:OpenStreetMapLayer /&gt;
            &lt;/esri:Map&gt;
            </code>
            <para>
            The OpenStreetMap organization hosts several types of maps that can be used as OpenStreetMapLayer's. 
            To change which type of map is used, specify the 
            <see cref="P:ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer.Style">OpenStreetMapLayer.Style</see> 
            Property to any one of several 
            <see cref="T:ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer.MapStyle">OpenStreetMapLayer.MapStyle</see> 
            Enumerations. The default OpenStreetMap.MapStyle Property is <b>OpenStreetMapLayer.MapStyle.Mapnik</b> meaning 
            that if an OpenStreetMapLayer.Style is not specified in constructing an OpenStreetMapLayer, the 
            <b>OpenStreetMapLayer.MapStyle.Mapnik</b> style will be used by default. The following is an XAML example of 
            specifying a specific OpenStreetMapLayer.Style when defining a new OpenStreetMapLayer:
            </para>
            <code language="XAML">
            &lt;esri:Map x:Name="MyMap"&gt;
             &lt;esri:OpenStreetMapLayer Style=”CycleMap”/&gt;
            &lt;/esri:Map&gt;
            </code>
            <para>
            If it is not desired to use the map services provided directly by the OpenStreetMap organization or if you 
            discover that additional map services are provided for which Esri has not provided an explicit 
            OpenStreetMapLayer.Style, developers can explicitly provide their own Url's for an OpenStreetMapLayer 
            using the 
            <see cref="P:ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer.TileServers">OpenStreetMapLayer.TileServers</see> 
            Property. When using the OpenStreetMapLayer.TileServers Property, the OpenStreetMapLayer.Style Property is 
            ignored. The 
            <see cref="T:ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer.TileServerList">OpenStreetMapLayer.TileServerList</see> 
            Class is a List Collection of Strings that are the Url's to various OpenStreetMap map based servers. The 
            following is an XAML example of specifying specific Urls using the OpenStreetMapLayer.TileServers Property 
            when defining a new OpenStreetMapLayer:
            </para>
            <code language="XAML">
            &lt;esri:Map x:Name="MyMap"&gt;
              &lt;esri:OpenStreetMapLayer ID="osmLayer"&gt;
                &lt;esri:OpenStreetMapLayer.TileServers&gt;
                  &lt;sys:String&gt;http://otile1.mqcdn.com/tiles/1.0.0/osm&lt;/sys:String&gt;
                  &lt;sys:String&gt;http://otile2.mqcdn.com/tiles/1.0.0/osm&lt;/sys:String&gt;
                  &lt;sys:String&gt;http://otile3.mqcdn.com/tiles/1.0.0/osm&lt;/sys:String&gt;
                &lt;/esri:OpenStreetMapLayer.TileServers&gt;
              &lt;/esri:OpenStreetMapLayer&gt;
            &lt;/esri:Map&gt;
            </code>
            <para>
            It is important to understand that only one Url is needed in the OpenStreetMapLayer.TileServerList. If multiple 
            Urls are included in the OpenStreetMapLayer.TileServerList, all of the map servers should be serving up the same 
            base data. The reason for having the ability to specify multiple Urls in the OpenStreetMapLayer.TileServerList 
            is to improve performance by load balancing the requests the client application uses across multiple servers. 
            If different OpenStreetMap based map services are specified in the OpenStreetMapLayer.TileServerList, the tiles 
            that are placed together in the Esri Map control will yield unexpected results. For example, assume that three 
            different OpenStreetMap map based services are used for the the OpenStreetMapLayer.TileServers Property in the 
            following XAML example code:
            </para>
            <code language="XAML">
            &lt;esri:Map x:Name="MyMap"&gt;
              &lt;esri:OpenStreetMapLayer ID="osmLayer"&gt;
                &lt;esri:OpenStreetMapLayer.TileServers&gt;
                  &lt;sys:String&gt;http://otile1.mqcdn.com/tiles/1.0.0/osm&lt;/sys:String&gt;
                  &lt;sys:String&gt;http://a.tile.openstreetmap.org&lt;/sys:String&gt;
                  &lt;sys:String&gt;http://a.tile.opencyclemap.org/cycle&lt;/sys:String&gt;
                &lt;/esri:OpenStreetMapLayer.TileServers&gt;
              &lt;/esri:OpenStreetMapLayer&gt;
            &lt;/esri:Map&gt;   
            </code>
            <para>
            The following is a screen shot of the previous XAML code fragment showing the application's undesirable 
            results appearing if different map based services were used in the the OpenStreetMap.TileServers Property:
            </para>
            <para>
            <img border="0" alt="Using different base map services as the OpenStreetMap.TileServer Property yields strange results." src="C:\ArcGIS\dotNET\API SDK\Main\ArcGISSilverlightSDK\LibraryReference\images\Client.Toolkit.DataSources.OpenStreetMap.TileServersStrange.png"/>
            </para>
            <para>
            Whenever an OpenStreetMapLayer is used in a production application based on services from the OpenStreetMap 
            organization, it is required by their license agreement to provide the 
            <a href="http://www.openstreetmap.org/copyright">appropriate credit</a> for using their data. The credit 
            information for maps provided by the OpenStreetMap organization is stored in the 
            <see cref="P:ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer.AttributionTemplate">OpenStreetMapLayer.AttributionTemplate</see> 
            Property. To display the credit information in your application is most easily accomplished by adding an Esri 
            <see cref="T:ESRI.ArcGIS.Client.Toolkit.Attribution">Attribution</see> control to your client application 
            and binding the <see cref="M:ESRI.ArcGIS.Client.Toolkit.Attribution.Layers">Attribution.Layers</see> Property 
            to the OpenStreetMapLayer. The following is an XAML example of how to accomplish this:
            </para>
            <code language="XAML">
            &lt;esri:Map x:Name="MyMap"&gt;
              &lt;esri:OpenStreetMapLayer Style="Mapnik" /&gt;
            &lt;/esri:Map&gt;
            &lt;esri:Attribution Layers="{Binding ElementName=MyMap, Path=Layers}" /&gt;
            </code>
            <para>
            OpenStreetMap is released under the Create Commons "Attribution-Share Alike 2.0 Generic" license.
            </para>
            </remarks>
            <example>
            <para>
            <b>How to use:</b>
            </para>
            <para>
            Click the Button to add an OpenStreetMapLayer to the Map (it will be added via code-behind). The credit information 
            about the dataset will displayed in the Attribution Control.
            </para>
            <para>
            The XAML code in this example is used in conjunction with the code-behind (C# or VB.NET) to demonstrate
            the functionality.
            </para>
            <para>
            The following screen shot corresponds to the code example in this page.
            </para>
            <para>
            <img border="0" alt="Example of loading an OpenStreetMapLayer via code-behind." src="C:\ArcGIS\dotNET\API SDK\Main\ArcGISSilverlightSDK\LibraryReference\images\Client.Toolkit.DataSources.OpenStreetMap.png"/>
            </para>
            <code title="Example XAML1" description="" lang="XAML">
            &lt;Grid x:Name="LayoutRoot" &gt;
              
              &lt;!-- Add a Map Control to the application. --&gt;
              &lt;esri:Map x:Name="Map1" WrapAround="True" HorizontalAlignment="Left" VerticalAlignment="Top" 
                    Margin="0,156,0,0" Height="350" Width="550" /&gt;
              
              &lt;!-- Add an Attribution Control. --&gt;
              &lt;esri:Attribution x:Name="Attribution1" Width="550" Height="50" HorizontalAlignment="Left" Margin="0,512,0,38" /&gt;
              
              &lt;!-- Add a Button that will allow the user to add an OpenStreetMapLayer via code-behind. --&gt;
              &lt;Button Name="Button1" Height="23" HorizontalAlignment="Left" Margin="0,128,0,0"  VerticalAlignment="Top" 
                      Width="550" Content="Add an OpenStreetMapLayer (via code-behind)."
                      Click="Button1_Click" /&gt;
              
              &lt;!-- Provide the instructions on how to use the sample code. --&gt;
              &lt;TextBlock Height="122" HorizontalAlignment="Left" Name="TextBlock1" VerticalAlignment="Top" Width="572" 
                         TextWrapping="Wrap" Text="Click the Button to add an OpenStreetMapLayer to the Map (it will be added 
                         via code-behind). The credit information about the dataset will displayed in the Attribution Control." /&gt;
              
            &lt;/Grid&gt;
            </code>
            <code title="Example CS1" description="" lang="CS">
            private void Button1_Click(object sender, System.Windows.RoutedEventArgs e)
            {
              // Create a new instance of an OpenStreetMapLayer.
              ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer myOpenStreetMapLayer = new ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer();
              
              // Set the OpenStreetMapLayer.Style to that of MapStyle.CycleMap
              myOpenStreetMapLayer.Style = ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer.MapStyle.CycleMap;
              
              // Wire up an Initialized Event handler for the OpenStreetMapLayer.
              myOpenStreetMapLayer.Initialized += myOpenStreetMapLayer_Initialized;
              
              // Add the OpenStreetMapLayer to the Map's Layer Collection. This will cause the OpenStreetMapLayer.Initialized Event to fire.
              Map1.Layers.Add(myOpenStreetMapLayer);
            }
            
            private void myOpenStreetMapLayer_Initialized(object sender, EventArgs e)
            {
              // Get the OpenStreetMapLayer.
              ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer myOpenStreetMapLayer = (ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer)sender;
              
              // Display the OpenStreetMapLayer credit information via the ESRI Attribution Control.
              Attribution1.Layers = Map1.Layers;
            }
            </code>
            <code title="Example VB1" description="" lang="VB.NET">
            Private Sub Button1_Click(sender As System.Object, e As System.Windows.RoutedEventArgs)
              
              ' Create a new instance of an OpenStreetMapLayer.
              Dim myOpenStreetMapLayer As ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer = New ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer
              
              ' Set the OpenStreetMapLayer.Style to that of MapStyle.CycleMap
              myOpenStreetMapLayer.Style = ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer.MapStyle.CycleMap
              
              ' Wire up an Initialized Event handler for the OpenStreetMapLayer.
              AddHandler myOpenStreetMapLayer.Initialized, AddressOf myOpenStreetMapLayer_Initialized
              
              ' Add the OpenStreetMapLayer to the Map's Layer Collection. This will cause the OpenStreetMapLayer.Initialized Event to fire.
              Map1.Layers.Add(myOpenStreetMapLayer)
              
            End Sub
            
            Private Sub myOpenStreetMapLayer_Initialized(sender As Object, e As EventArgs)
              
              ' Get the OpenStreetMapLayer.
              Dim myOpenStreetMapLayer As ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer = sender
              
              ' Display the OpenStreetMapLayer credit information via the ESRI Attribution Control.
              Attribution1.Layers = Map1.Layers
              
            End Sub
            </code>
            </example>	
        </member>
        <member name="F:ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer.cornerCoordinate">
            <summary>Simple constant used for full extent and tile origin specific to this projection.</summary>
        </member>
        <member name="F:ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer.WKID">
            <summary>ESRI Spatial Reference ID for Web Mercator.</summary>
        </member>
        <member name="F:ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer.subDomains">
            <summary>Available subdomains for tiles.</summary>
        </member>
        <member name="F:ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer.baseUrl">
            <summary>Base URL used in GetTileUrl.</summary>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer"/> class.
            </summary>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer.#cctor">
            <summary>
            Initializes the <see cref="T:ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer"/> class.
            </summary>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer.Initialize">
            <summary>
            Initializes the resource.
            </summary>
            <remarks>
            	<para>Override this method if your resource requires asyncronous requests to initialize,
            and call the base method when initialization is completed.</para>
            	<para>Upon completion of initialization, check the <see cref="P:ESRI.ArcGIS.Client.Layer.InitializationFailure"/> for any possible errors.</para>
            </remarks>
            <seealso cref="E:ESRI.ArcGIS.Client.Layer.Initialized"/>
            <seealso cref="P:ESRI.ArcGIS.Client.Layer.InitializationFailure"/>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer.GetTileUrl(System.Int32,System.Int32,System.Int32)">
            <summary>
            Returns a URL to the specified tile in an OpenStreetMapLayer.
            </summary>
            <param name="level">Layer level</param>
            <param name="row">Tile row</param>
            <param name="col">Tile column</param>
            <returns>URL to the tile image</returns>
            <remarks>
            <para>
            An OpenStreetMapLayer is made up of multiple tiles (or images) that are automatically put together in 
            a mosaic for display in a Map Control. The tiles are pre-generated on a web server and can 
            be accessed individually via a URL. In order to access the URL for a specific tile it is 
            required to know the Level, Row, and Column information. 
            </para>
            <para>
            A programmatic way to determine the various Level, Row, and Column information can be obtained by writing some 
            code-behind logic in the 
            <see cref="E:ESRI.ArcGIS.Client.TiledLayer.TileLoading">OpenStreetMapLayer.TileLoading</see> Event 
            (see the code example in this document).
            </para>  
            </remarks>
            <example>
            <para>
            <b>How to use:</b>
            </para>
            <para>
            After the OpenStreetMapLayer loads in the Map Control, the ListBox will be populated with all the 
            combinations of 'Level, Row, and Column' tiles that make up the initial extent of the OpenStreetMapLayer 
            image service. Click on any of the combinations in the Listbox and that particular tile will be 
            displayed in an Image Control as well as the Url for that image.
            </para>
            <para>
            The XAML code in this example is used in conjunction with the code-behind (C# or VB.NET) to demonstrate
            the functionality.
            </para>
            <para>
            The following screen shot corresponds to the code example in this page.
            </para>
            <para>
            <img border="0" alt="Displaying individual tile images and their Url values for an OpenStreetMapLayer." src="C:\ArcGIS\dotNET\API SDK\Main\ArcGISSilverlightSDK\LibraryReference\images\Client.Toolkit.DataSources.OpenStreetMap.GetTileIUrl.png"/>
            </para>
            <code title="Example XAML1" description="" lang="XAML">
            &lt;Grid x:Name="LayoutRoot" &gt;
              
              &lt;!-- Provide the instructions on how to use the sample code. --&gt;
              &lt;TextBlock Height="78" HorizontalAlignment="Left" Name="TextBlock1" VerticalAlignment="Top" Width="640" 
                TextWrapping="Wrap" Text="After the OpenStreetMapLayer loads in the Map Control, the ListBox will be 
                populated with all the combinations of 'Level, Row, and Column' tiles that make up the initial extent of the 
                OpenStreetMapLayer image service. Click on any of the combinations in the Listbox and that particular 
                tile will be displayed in an Image Control as well as the Url for that image." /&gt;
              
              &lt;!-- The Map Control. --&gt;
              &lt;sdk:Label Height="28" HorizontalAlignment="Left" Margin="33,160,0,0" Name="Label_MapControl" 
                   VerticalAlignment="Top" Width="120" Content="Map Control:"/&gt;
              &lt;esri:Map Background="White" HorizontalAlignment="Left" Margin="32,180,0,0" Name="Map1" 
                   VerticalAlignment="Top" WrapAround="True" Height="320" Width="600"&gt;
                &lt;esri:Map.Layers&gt;
                  &lt;esri:LayerCollection&gt;
                  
                    &lt;!-- 
                    Add an OpenStreetMapLayer. The InitializationFailed Event is used to notify the user in case the 
                    OpenStreetMapLayer service is down. The TileLoading Event provides details about individual tiles 
                    in the OpenStreetMapLayer service that is necessary to get the input parameters (Level, Row, Column) 
                    of the OpenStreetMapLayer.GetTileUrl Method. 
                    --&gt;
                    &lt;esri:OpenStreetMapLayer ID="myOpenStreetMapLayer" Style="CycleMap"
                          InitializationFailed="OpenStreetMapLayer_InitializationFailed"
                          TileLoading="OpenStreetMapLayer_TileLoading"/&gt;
                  
                  &lt;/esri:LayerCollection&gt;
                &lt;/esri:Map.Layers&gt;
              &lt;/esri:Map&gt;
              
              &lt;!-- ListBox results. --&gt;
              &lt;sdk:Label Height="28" HorizontalAlignment="Left" Margin="33,512,0,0" Name="Label_ListBox1" 
                   VerticalAlignment="Top" Width="194" Content="ListBox Control:"/&gt;
              &lt;ListBox Height="93" HorizontalAlignment="Left" Margin="33,526,0,0" Name="ListBox1" 
                       VerticalAlignment="Top" Width="194" SelectionChanged="ListBox1_SelectionChanged"/&gt;
                
              &lt;!-- TiledLayer.TileLoadEventsArgs. Level, Row, and Column. --&gt;
              &lt;sdk:Label Height="28" HorizontalAlignment="Left" Margin="239,510,0,0" Name="Label_TileLoadEventArgs" 
                   VerticalAlignment="Top" Width="120" Content="TileLoadEventArgs:"/&gt;
              &lt;sdk:Label Height="28" HorizontalAlignment="Left" Margin="239,542,0,0" Name="Label_Level" 
                   VerticalAlignment="Top" Width="48" Content="Level:"/&gt;
              &lt;TextBox Height="23" HorizontalAlignment="Left" Margin="293,536,0,0" Name="TextBox_Level" 
                       VerticalAlignment="Top" Width="52" /&gt;
              &lt;sdk:Label Height="28" HorizontalAlignment="Left" Margin="239,569,0,0" Name="Label_Row" 
                   VerticalAlignment="Top" Width="48" Content="Row:"/&gt;
              &lt;TextBox Height="23" HorizontalAlignment="Left" Margin="293,566,0,0" Name="TextBox_Row" 
                       VerticalAlignment="Top" Width="51" /&gt;
              &lt;sdk:Label Height="28" HorizontalAlignment="Left" Margin="239,602,0,0" Name="Label_Column" 
                   VerticalAlignment="Top" Width="48" Content="Column:" /&gt;
              &lt;TextBox Height="23" HorizontalAlignment="Left" Margin="293,596,0,0" Name="TextBox_Column" 
                       VerticalAlignment="Top" Width="52" /&gt;
              
              &lt;!-- OpenStreetMapLayer.GetTileUrl results. --&gt;
              &lt;sdk:Label Height="28" HorizontalAlignment="Left" Margin="32,631,0,0" Name="Label_GetTileUrl" 
                   VerticalAlignment="Top" Width="344" Content="OpenStreetMapLayer.GetTileUrl:"/&gt;
              &lt;TextBox Height="124" HorizontalAlignment="Left" Margin="32,648,0,0" Name="TextBox_GetTileUrl" 
                       VerticalAlignment="Top" Width="344" TextWrapping="Wrap"/&gt;
              
              &lt;!-- Image Control results. --&gt;
              &lt;sdk:Label Height="28" HorizontalAlignment="Left" Margin="384,508,0,0" Name="Label_ImageControl1" 
                   VerticalAlignment="Top" Width="198" Content="Image Control:"/&gt;
              &lt;Image Height="250" HorizontalAlignment="Left" Margin="382,522,0,0" Name="Image1" 
                     Stretch="Fill" VerticalAlignment="Top" Width="250" /&gt;
              
            &lt;/Grid&gt;
            </code>
            <code title="Example CS1" description="" lang="CS">
            private void OpenStreetMapLayer_InitializationFailed(object sender, System.EventArgs e)
            {
              // Notify the user if there is a failure with the OpenStreetMapLayer service.
              ESRI.ArcGIS.Client.Layer aLayer = (ESRI.ArcGIS.Client.Layer)sender;
              MessageBox.Show(aLayer.InitializationFailure.Message);
            }
            
            private void OpenStreetMapLayer_TileLoading(object sender, ESRI.ArcGIS.Client.TiledLayer.TileLoadEventArgs e)
            {
              // This Event will fire for each tile that is loaded in the Map Control. For instance, if it takes 4 tiled images
              // to render the Map Control completely, then this Event will fire 4 times. As you Zoom In or Pan around to other
              // geographic areas in the Map, this Event will continue to fire until all of the tiles have been processed. 
              
              // The e argument of the Event returns a TileLoadEventArgs object.
              ESRI.ArcGIS.Client.TiledLayer.TileLoadEventArgs myTileLoadEventArgs = e;
              
              // Get the Tile's Level, Row, and Column Properties
              int myLevel = myTileLoadEventArgs.Level;
              int myRow = myTileLoadEventArgs.Row;
              int myColumn = myTileLoadEventArgs.Column;
              
              // Generate a string that is comma delimited with the Level, Row, and Column values and add them to a Listbox.
              string myString = myLevel.ToString() + "," + myRow.ToString() + "," + myColumn.ToString();
              
              // Do not add any duplicates.
              if (!(ListBox1.Items.Contains(myString)))
              {
                ListBox1.Items.Add(myString);
              }
            }
            
            private void ListBox1_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
            {
              // Get the SelectedItem from the Listbox and parse out the Level, Row, and Column arguments necessary to 
              // obtain the Url for a specific tile.
              string theConcatenatedString = (string)ListBox1.SelectedItem;
              string[] theParts = theConcatenatedString.Split(',');
              int theLevel = Convert.ToInt32(theParts[0]);
              int theRow = Convert.ToInt32(theParts[1]);
              int theColumn = Convert.ToInt32(theParts[2]);
              
              // Update the Level, Row, and Column information in the TextBoxes for ease of viewing.
              TextBox_Level.Text = theLevel.ToString();
              TextBox_Row.Text = theRow.ToString();
              TextBox_Column.Text = theColumn.ToString();
              
              // Get the OpenStreetMapLayer. 
              ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer theOpenStreetMapLayer = (ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer)Map1.Layers["myOpenStreetMapLayer"];
              
              // Obtain a specific tile Url from the OpenStreetMapLayer using the three arguments for the GetTileUrl Method.
              string theGetTileUrl = theOpenStreetMapLayer.GetTileUrl(theLevel, theRow, theColumn);
              TextBox_GetTileUrl.Text = theGetTileUrl;
              
              // Only process valid restults. 
              if (theGetTileUrl != null)
              {
                // Set the specific tile's Url as the Image's Source. 
                Uri myUri = new Uri(theGetTileUrl);
                Image1.Source = new System.Windows.Media.Imaging.BitmapImage(myUri);
              }
            }
            </code>
            <code title="Example VB1" description="" lang="VB.NET">
            Private Sub OpenStreetMapLayer_TileLoading(sender As System.Object, e As ESRI.ArcGIS.Client.TiledLayer.TileLoadEventArgs)
              
              ' This Event will fire for each tile that is loaded in the Map Control. For instance, if it takes 4 tiled images
              ' to render the Map Control completely, then this Event will fire 4 times. As you Zoom In or Pan around to other
              ' geographic areas in the Map, this Event will continue to fire until all of the tiles have been processed. 
              
              ' The e argument of the Event returns a TileLoadEventArgs object.
              Dim myTileLoadEventArgs As ESRI.ArcGIS.Client.TiledLayer.TileLoadEventArgs = e
              
              ' Get the Tile's Level, Row, and Column Properties
              Dim myLevel As Integer = myTileLoadEventArgs.Level
              Dim myRow As Integer = myTileLoadEventArgs.Row
              Dim myColumn As Integer = myTileLoadEventArgs.Column
              
              ' Generate a string that is comma delimited with the Level, Row, and Column values and add them to a Listbox.
              Dim myString As String = myLevel.ToString + "," + myRow.ToString + "," + myColumn.ToString
              
              ' Do not add any duplicates.
              If Not ListBox1.Items.Contains(myString) Then
                ListBox1.Items.Add(myString)
              End If
              
            End Sub
              
            Private Sub ListBox1_SelectionChanged(ByVal sender As System.Object, ByVal e As System.Windows.Controls.SelectionChangedEventArgs)
              
              ' Get the SelectedItem from the Listbox and parse out the Level, Row, and Column arguments necessary to 
              ' obtain the Url for a specific tile.
              Dim theConcatenatedString As String = ListBox1.SelectedItem
              Dim theParts As String() = Split(theConcatenatedString, ",")
              Dim theLevel As Integer = CInt(theParts(0))
              Dim theRow As Integer = CInt(theParts(1))
              Dim theColumn As Integer = CInt(theParts(2))
              
              ' Update the Level, Row, and Column information in the TextBoxes for ease of viewing.
              TextBox_Level.Text = theLevel.ToString
              TextBox_Row.Text = theRow.ToString
              TextBox_Column.Text = theColumn.ToString
              
              ' Get the OpenStreetMapLayer. 
              Dim theOpenStreetMapLayer As ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer = Map1.Layers("myOpenStreetMapLayer")
              
              ' Obtain a specific tile Url from the OpenStreetMapLayer using the three arguments for the GetTileUrl Method.
              Dim theGetTileUrl As String = theOpenStreetMapLayer.GetTileUrl(theLevel, theRow, theColumn)
              TextBox_GetTileUrl.Text = theGetTileUrl
              
              ' Only process valid restults. 
              If theGetTileUrl IsNot Nothing Then
                
                ' Set the specific tile's Url as the Image's Source. 
                Dim myUri As New Uri(theGetTileUrl)
                Image1.Source = New Imaging.BitmapImage(myUri)
                
              End If
              
            End Sub
            </code>
            </example>
        </member>
        <member name="F:ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer.TileServersProperty">
            <summary>
            Dependancy property for <see cref="P:ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer.TileServers"/>.
            </summary>
        </member>
        <member name="F:ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer.StyleProperty">
            <summary>
            Identifies the <see cref="P:ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer.Style"/> dependency property.
            </summary>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer.TileServers">
            <summary>
            Gets or Sets the tile servers to use when requesting tiles. If the TileServers Property is set 
            the <see cref="P:ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer.Style"/> Property will be ignored.
            </summary>
            <remarks>
            <para>
            It is only required to create a new instance of an OpenStreetMapLayer and then add it to the 
            <see cref="P:ESRI.ArcGIS.Client.Map.Layers">Map.Layers</see> Property to display a default 
            OpenStreetMapLayer. The reason for this is that the internals of the OpenStreetMapLayer constructor 
            automatically uses an internal Url to a web service provided by the OpenStreetMap organization. So 
            the following is an XAML example of all that is needed to create a default OpenStreetMapLayer:
            </para>
            <code language="XAML">
            &lt;esri:Map x:Name="MyMap"&gt;
              &lt;esri:OpenStreetMapLayer /&gt;
            &lt;/esri:Map&gt;
            </code>
            <para>
            The OpenStreetMap organization hosts several types of maps that can be used as OpenStreetMapLayer's. 
            To change which type of map is used, specify the 
            <see cref="P:ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer.Style">OpenStreetMapLayer.Style</see> 
            Property to any one of several 
            <see cref="T:ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer.MapStyle">OpenStreetMapLayer.MapStyle</see> 
            Enumerations. The default OpenStreetMap.MapStyle Property is <b>OpenStreetMapLayer.MapStyle.Mapnik</b> meaning 
            that if an OpenStreetMapLayer.Style is not specified in constructing an OpenStreetMapLayer, the 
            <b>OpenStreetMapLayer.MapStyle.Mapnik</b> style will be used by default. The following is an XAML example of 
            specifying a specific OpenStreetMapLayer.Style when defining a new OpenStreetMapLayer:
            </para>
            <code language="XAML">
            &lt;esri:Map x:Name="MyMap"&gt;
             &lt;esri:OpenStreetMapLayer Style=”CycleMap”/&gt;
            &lt;/esri:Map&gt;
            </code>
            <para>
            If it is not desired to use the map services provided directly by the OpenStreetMap organization or if you 
            discover that additional map services are provided for which Esri has not provided an explicit 
            OpenStreetMapLayer.Style, developers can explicitly provide their own Url's for an OpenStreetMapLayer 
            using the OpenStreetMapLayer.TileServers Property. When using the OpenStreetMapLayer.TileServers Property, 
            the OpenStreetMapLayer.Style Property is ignored. The 
            <see cref="T:ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer.TileServerList">OpenStreetMapLayer.TileServerList</see> 
            Class is a List Collection of Strings that are the Url's to various OpenStreetMap map based servers. The 
            following is an XAML example of specifying specific Urls using the OpenStreetMapLayer.TileServers Property 
            when defining a new OpenStreetMapLayer:
            </para>
            <code language="XAML">
            &lt;esri:Map x:Name="MyMap"&gt;
              &lt;esri:OpenStreetMapLayer ID="osmLayer"&gt;
                &lt;esri:OpenStreetMapLayer.TileServers&gt;
                  &lt;sys:String&gt;http://otile1.mqcdn.com/tiles/1.0.0/osm&lt;/sys:String&gt;
                  &lt;sys:String&gt;http://otile2.mqcdn.com/tiles/1.0.0/osm&lt;/sys:String&gt;
                  &lt;sys:String&gt;http://otile3.mqcdn.com/tiles/1.0.0/osm&lt;/sys:String&gt;
                &lt;/esri:OpenStreetMapLayer.TileServers&gt;
              &lt;/esri:OpenStreetMapLayer&gt;
            &lt;/esri:Map&gt;
            </code>
            <para>
            It is important to understand that only one Url is needed in the OpenStreetMapLayer.TileServerList. If multiple 
            Urls are included in the OpenStreetMapLayer.TileServerList, all of the map servers should be serving up the same 
            base data. The reason for having the ability to specify multiple Urls in the OpenStreetMapLayer.TileServerList 
            is to improve performance by load balancing the requests the client application uses across multiple servers. 
            If different OpenStreetMap based map services are specified in the OpenStreetMapLayer.TileServerList, the tiles 
            that are placed together in the Esri Map control will yield unexpected results. For example, assume that three 
            different OpenStreetMap map based services are used for the the OpenStreetMapLayer.TileServers Property in the 
            following XAML example code:
            </para>
            <code language="XAML">
            &lt;esri:Map x:Name="MyMap"&gt;
              &lt;esri:OpenStreetMapLayer ID="osmLayer"&gt;
                &lt;esri:OpenStreetMapLayer.TileServers&gt;
                  &lt;sys:String&gt;http://otile1.mqcdn.com/tiles/1.0.0/osm&lt;/sys:String&gt;
                  &lt;sys:String&gt;http://a.tile.openstreetmap.org&lt;/sys:String&gt;
                  &lt;sys:String&gt;http://a.tile.opencyclemap.org/cycle&lt;/sys:String&gt;
                &lt;/esri:OpenStreetMapLayer.TileServers&gt;
              &lt;/esri:OpenStreetMapLayer&gt;
            &lt;/esri:Map&gt;   
            </code>
            <para>
            The following is a screen shot of the previous XAML code fragment showing the application's undesirable 
            results appearing if different map based services were used in the the OpenStreetMap.TileServers Property:
            </para>
            <para>
            <img border="0" alt="Using different base map services as the OpenStreetMap.TileServer Property yields strange results." src="C:\ArcGIS\dotNET\API SDK\Main\ArcGISSilverlightSDK\LibraryReference\images\Client.Toolkit.DataSources.OpenStreetMap.TileServersStrange.png"/>
            </para>
            </remarks>
            <example>
            <para>
            <b>How to use:</b>
            </para>
            <para>
            Click the various buttons (on left) to add OpenStreetMapLayers to the Map. Click the 'Clear all layers' 
            button in-between adding the layers to clear out the Map. Notice the effect of adding the various 
            OpenStreetMapLayers - read the comments in the code-behind for more info.
            </para>
            <para>
            The XAML code in this example is used in conjunction with the code-behind (C# or VB.NET) to demonstrate
            the functionality.
            </para>
            <para>
            The following screen shot corresponds to the code example in this page.
            </para>
            <para>
            <img border="0" alt="Using the OpenStreetMapLayer.TileServers Property to add different layers." src="C:\ArcGIS\dotNET\API SDK\Main\ArcGISSilverlightSDK\LibraryReference\images\Client.Toolkit.DataSources.OpenStreetMap.TileServers.png"/>
            </para>
            <code title="Example XAML1" description="" lang="XAML">
            &lt;Grid x:Name="LayoutRoot" &gt;
              
              &lt;!-- Add a Map Control to the application. --&gt;
              &lt;esri:Map x:Name="Map1" WrapAround="True" HorizontalAlignment="Left" VerticalAlignment="Top" 
                    Margin="0,250,0,0" Height="350" Width="550" /&gt;
              
              &lt;!-- Button to add multiple OpenStreetMapLayers all from the same base data. --&gt;
              &lt;Button Name="Button_MultipleSameBase" Height="23" HorizontalAlignment="Left" Margin="0,165,0,0"  
                      Width="395" Content="Add multiple OpenStreetMapLayer's all using the same base data."
                      VerticalAlignment="Top" Click="Button_MultipleSameBase_Click" /&gt;
              
              &lt;!-- Button to add multiple OpenStreetMapLayers each using different base data. --&gt;
              &lt;Button Content="Add multiple OpenStreetMapLayers' each using different base data." Height="23"  
                      Margin="0,193,0,0" Name="ButtonMultipleDifferentBase" VerticalAlignment="Top" Width="395" 
                      HorizontalAlignment="Left" Click="ButtonMultipleDifferentBase_Click"/&gt;
                
              &lt;!-- Button to add one OpenStreetMapLayer. --&gt;
              &lt;Button Content="Add one OpenStreetMapLayer." Height="23" HorizontalAlignment="Left" Margin="0,222,0,0" 
                      Name="Button_OneLayer" VerticalAlignment="Top" Width="394" Click="Button_OneLayer_Click"/&gt;
                
              &lt;!-- Clear all of the Layers in the Map. --&gt;
              &lt;Button Content="Clear all layers." Height="80" HorizontalAlignment="Left" Margin="401,165,0,0" 
                      Name="Button_ClearAllLayers" VerticalAlignment="Top" Width="149" Click="Button_ClearAllLayers_Click"/&gt;
              
              &lt;!-- Provide the instructions on how to use the sample code. --&gt;
              &lt;TextBlock Height="77" HorizontalAlignment="Left" Name="TextBlock1" VerticalAlignment="Top" Width="572" 
                         TextWrapping="Wrap" Text="Click the various buttons (on left) to add OpenStreetMapLayers to the Map. 
                         Click the 'Clear all layers' button in-between adding the layers to clear out the Map. Notice the 
                         effect of adding the various OpenStreetMapLayers - read the comments in the code-behind for more info." /&gt;
              
            &lt;/Grid&gt;
            </code>
            <code title="Example CS1" description="" lang="CS">
            private void Button_MultipleSameBase_Click(object sender, System.Windows.RoutedEventArgs e)
            {
              // Create a new instance of an OpenStreetMapLayer.
              ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer myOpenStreetMapLayer = new ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer();
              
              // Create a new instance of the TileServerList object.
              ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer.TileServerList myTileServers = new ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer.TileServerList();
              
              // Add Urls (for the same base data) to the TileServerList. This is a great way to have a performance increase on the 
              // client side as you are getting data from multiple servers and not taxing any one server too much.
              myTileServers.Add("http://otile1.mqcdn.com/tiles/1.0.0/osm");
              myTileServers.Add("http://otile2.mqcdn.com/tiles/1.0.0/osm");
              myTileServers.Add("http://otile3.mqcdn.com/tiles/1.0.0/osm");
              
              // Set the OpenStreetMap.TileServer Property.
              myOpenStreetMapLayer.TileServers = myTileServers;
              
              // Add the OpenStreetMapLayer to the Map's Layer Collection. This will refresh the map with the new layers.
              Map1.Layers.Add(myOpenStreetMapLayer);
            }
              
            private void ButtonMultipleDifferentBase_Click(object sender, System.Windows.RoutedEventArgs e)
            {
              // Create a new instance of an OpenStreetMapLayer.
              ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer myOpenStreetMapLayer = new ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer();
              
              // Create a new instance of the TileServerList object.
              ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer.TileServerList myTileServers = new ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer.TileServerList();
              
              // This is not a realistic scenario. If different OpenStreetMap based map services are specified in the 
              // OpenStreetMapLayer.TileServerList, the tiles that are placed together in the Esri Map control will yield 
              // unexpected results.
              myTileServers.Add("http://otile1.mqcdn.com/tiles/1.0.0/osm");
              myTileServers.Add("http://a.tile.openstreetmap.org");
              myTileServers.Add("http://a.tile.opencyclemap.org/cycle");
              
              // Set the OpenStreetMap.TileServer Property.
              myOpenStreetMapLayer.TileServers = myTileServers;
              
              // Add the OpenStreetMapLayer to the Map's Layer Collection. This will refresh the map with the new layers.
              Map1.Layers.Add(myOpenStreetMapLayer);
            }
              
            private void Button_OneLayer_Click(object sender, System.Windows.RoutedEventArgs e)
            {
              // Create a new instance of an OpenStreetMapLayer.
              ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer myOpenStreetMapLayer = new ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer();
              
              // Create a new instance of the TileServerList object.
              ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer.TileServerList myTileServers = new ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer.TileServerList();
              
              // If you only have one server to access, then just add one Url to the TileServerList.
              myTileServers.Add("http://a.tile.cloudmade.com/fd093e52f0965d46bb1c6c6281022199/3/256");
              
              // Set the OpenStreetMap.TileServer Property.
              myOpenStreetMapLayer.TileServers = myTileServers;
              
              // Add the OpenStreetMapLayer to the Map's Layer Collection. This will refresh the map with the new layers.
              Map1.Layers.Add(myOpenStreetMapLayer);
            }
              
            private void Button_ClearAllLayers_Click(object sender, System.Windows.RoutedEventArgs e)
            {
              // Clear all the layers in the Map. 
              // Note: Do this before clicking the other buttons so you can see the newly added OpenStreetMapLayer(s).
              Map1.Layers.Clear();
            }
            </code>
            <code title="Example VB1" description="" lang="VB.NET">
            Private Sub Button_MultipleSameBase_Click(sender As System.Object, e As System.Windows.RoutedEventArgs)
              
              ' Create a new instance of an OpenStreetMapLayer.
              Dim myOpenStreetMapLayer As ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer = New ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer
              
              ' Create a new instance of the TileServerList object.
              Dim myTileServers As ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer.TileServerList = New ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer.TileServerList
              
              ' Add Urls (for the same base data) to the TileServerList. This is a great way to have a performance increase on the 
              ' client side as you are getting data from multiple servers and not taxing any one server too much.
              myTileServers.Add("http://otile1.mqcdn.com/tiles/1.0.0/osm")
              myTileServers.Add("http://otile2.mqcdn.com/tiles/1.0.0/osm")
              myTileServers.Add("http://otile3.mqcdn.com/tiles/1.0.0/osm")
              
              ' Set the OpenStreetMap.TileServer Property.
              myOpenStreetMapLayer.TileServers = myTileServers
              
              ' Add the OpenStreetMapLayer to the Map's Layer Collection. This will refresh the map with the new layers.
              Map1.Layers.Add(myOpenStreetMapLayer)
              
            End Sub
              
            Private Sub ButtonMultipleDifferentBase_Click(sender As System.Object, e As System.Windows.RoutedEventArgs)
              
              ' Create a new instance of an OpenStreetMapLayer.
              Dim myOpenStreetMapLayer As ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer = New ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer
              
              ' Create a new instance of the TileServerList object.
              Dim myTileServers As ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer.TileServerList = New ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer.TileServerList
              
              ' This is not a realistic scenario. If different OpenStreetMap based map services are specified in the 
              ' OpenStreetMapLayer.TileServerList, the tiles that are placed together in the Esri Map control will yield 
              ' unexpected results.
              myTileServers.Add("http://otile1.mqcdn.com/tiles/1.0.0/osm")
              myTileServers.Add("http://a.tile.openstreetmap.org")
              myTileServers.Add("http://a.tile.opencyclemap.org/cycle")
              
              ' Set the OpenStreetMap.TileServer Property.
              myOpenStreetMapLayer.TileServers = myTileServers
              
              ' Add the OpenStreetMapLayer to the Map's Layer Collection. This will refresh the map with the new layers.
              Map1.Layers.Add(myOpenStreetMapLayer)
              
            End Sub
              
            Private Sub Button_OneLayer_Click(sender As System.Object, e As System.Windows.RoutedEventArgs)
              
              ' Create a new instance of an OpenStreetMapLayer.
              Dim myOpenStreetMapLayer As ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer = New ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer
              
              ' Create a new instance of the TileServerList object.
              Dim myTileServers As ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer.TileServerList = New ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer.TileServerList
              
              ' If you only have one server to access, then just add one Url to the TileServerList.
              myTileServers.Add("http://a.tile.cloudmade.com/fd093e52f0965d46bb1c6c6281022199/3/256")
              
              ' Set the OpenStreetMap.TileServer Property.
              myOpenStreetMapLayer.TileServers = myTileServers
              
              ' Add the OpenStreetMapLayer to the Map's Layer Collection. This will refresh the map with the new layers.
              Map1.Layers.Add(myOpenStreetMapLayer)
              
            End Sub
              
            Private Sub Button_ClearAllLayers_Click(sender As System.Object, e As System.Windows.RoutedEventArgs)
              
              ' Clear all the layers in the Map. 
              ' Note: Do this before clicking the other buttons so you can see the newly added OpenStreetMapLayer(s).
              Map1.Layers.Clear()
              
            End Sub
            </code>
            </example>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer.Style">
            <summary>
            Gets or sets the map style. This property is ignored if the 
            <see cref="P:ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer.TileServers"/> Property is set.
            </summary>
            <remarks>
            <para>
            The OpenStreetMap organization hosts several types of maps that can be used as OpenStreetMapLayer's. 
            To change which type of map is used, specify the OpenStreetMapLayer.Style Property to any one of several 
            <see cref="T:ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer.MapStyle">OpenStreetMapLayer.MapStyle</see> 
            Enumerations. The default OpenStreetMap.MapStyle Property is <b>OpenStreetMapLayer.MapStyle.Mapnik</b> meaning 
            that if an OpenStreetMapLayer.Style is not specified in constructing an OpenStreetMapLayer, the 
            <b>OpenStreetMapLayer.MapStyle.Mapnik</b> style will be used by default. The following is an XAML example of 
            specifying a specific OpenStreetMapLayer.Style when defining a new OpenStreetMapLayer:
            </para>
            <code language="XAML">
            &lt;esri:Map x:Name="MyMap"&gt;
             &lt;esri:OpenStreetMapLayer Style=”CycleMap”/&gt;
            &lt;/esri:Map&gt;
            </code>
            </remarks>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer.AttributionTemplate">
            <summary>
            Gets the attribution template of the layer.
            </summary>
            <value>The attribution template.</value>
            <remarks>
            <para>
            The AttributionTemplate Property returns a 
            <a href="http://msdn.microsoft.com/en-us/library/ms589297(v=VS.95).aspx" target="_blank">DataTemplate</a> 
            that allows for the display of the credit information of the OpenStreetMapLayer. 
            </para>
            <para>
            The typical use case is to use an Esri 
            <see cref="T:ESRI.ArcGIS.Client.Toolkit.Attribution">Attribution</see> Control is where the 
            <see cref="P:ESRI.ArcGIS.Client.Map.Layers">Map.Layers</see> Property is bound to the 
            <see cref="M:ESRI.ArcGIS.Client.Toolkit.Attribution.Layers">Attribution.Layers</see> Property. This will enable 
            the display of the credit/CopyrightText information about various layers in a nicely formatted output with minimal 
            programming effort. The ease of use for this use case becomes readily apparent when there are multiple 
            layers with credit/CopyrightText information that need to be displayed and only a single binding needs to take 
            place. <b>Note:</b> All layers that have an AttributionTemplate Property have the 
            <see cref="T:ESRI.ArcGIS.Client.IAttribution">IAttribution</see> Interface implemented. 
            </para>
            <para>
            The AttributionTemplate is read-only and is only useful to display the credit/CopyrightText information. It is 
            not possible to set the credit/CopyrightText information on the client side nor is it possible to change the 
            internals of the DataTemplate obtained by the AttributionTemplate. 
            </para>
            <para>
            Any Control that has a <b>ContentTemplate</b> Property can display the information contained in the 
            AttributionTemplate. These Controls can have their base Properties modified to alter the appearance of the 
            credit/CopyrightText information being displayed (i.e. FontSize, Foreground, etc.). When multiple layers have 
            credit/CopyrightText information that needs attributed, it takes more complex programming logic to display the 
            information; consider using the ESRI Attribution Control instead.
            </para>  
            <para>
            Whenever an OpenStreetMapLayer is used in a production application based on services from the OpenStreetMap 
            organization, it is required by their license agreement to provide the 
            <a href="http://www.openstreetmap.org/copyright">appropriate credit</a> for using their data. The credit 
            information for maps provided by the OpenStreetMap organization is stored in the 
            <see cref="P:ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer.AttributionTemplate">OpenStreetMapLayer.AttributionTemplate</see> 
            Property. To display the credit information in your application is most easily accomplished by adding an Esri 
            <see cref="T:ESRI.ArcGIS.Client.Toolkit.Attribution">Attribution</see> control to your client application 
            and binding the <see cref="M:ESRI.ArcGIS.Client.Toolkit.Attribution.Layers">Attribution.Layers</see> Property 
            to the OpenStreetMapLayer. The following is an XAML example of how to accomplish this:
            </para>
            <code language="XAML">
            &lt;esri:Map x:Name="MyMap"&gt;
              &lt;esri:OpenStreetMapLayer Style="Mapnik" /&gt;
            &lt;/esri:Map&gt;
            &lt;esri:Attribution Layers="{Binding ElementName=MyMap, Path=Layers}" /&gt;
            </code>
            <para>
            OpenStreetMap is released under the Create Commons "Attribution-Share Alike 2.0 Generic" license.
            </para>
            </remarks>
            <example>
            <para>
            <b>How to use:</b>
            </para>
            <para>
            Click the 'Display credit information' Button to display credit information in various controls.
            </para>
            <para>
            The XAML code in this example is used in conjunction with the code-behind (C# or VB.NET) to demonstrate
            the functionality.
            </para>
            <para>
            The following screen shot corresponds to the code example in this page.
            </para>
            <para>
            <img border="0" alt="Displaying the OpenStreetMapLayer.AttributeTemplate information in various controls." src="C:\ArcGIS\dotNET\API SDK\Main\ArcGISSilverlightSDK\LibraryReference\images\Client.Toolkit.DataSources.OpenStreetMap.AttributionTemplate.png"/>
            </para>
            <code title="Example XAML1" description="" lang="XAML">
            &lt;Grid x:Name="LayoutRoot"&gt;
              
              &lt;!-- Add a Map Control. --&gt;
              &lt;esri:Map Background="White" HorizontalAlignment="Left" Margin="0,180,0,0" Name="Map1" 
                    VerticalAlignment="Top" Height="300" Width="400" &gt;
                
                &lt;!-- Define an OpenStreetMapLayer. --&gt;
                &lt;esri:OpenStreetMapLayer Style="NoName"/&gt;
                
              &lt;/esri:Map&gt;
              
              &lt;!-- 
              Add a Button to display OpenStreetMapLayer credit information. 
              --&gt;
              &lt;Button Content="Display credit information" Height="23" 
                      HorizontalAlignment="Left" Margin="12,151,0,0" Width="763" VerticalAlignment="Top" 
                      Name="ButtonAttributionTemplate" Click="ButtonAttributionTemplate_Click"/&gt;
              
              &lt;!-- ESRI Attribution Control  --&gt;
              &lt;sdk:Label Height="24" HorizontalAlignment="Left" Margin="410,256,0,0" Name="Label_Attribution" 
                   VerticalAlignment="Top" Width="346" Content="ESRI Attribution Control:"/&gt;
              &lt;esri:Attribution HorizontalAlignment="Left" Margin="406,279,0,0" Name="Attribution1" 
                    VerticalAlignment="Top" Height="30" Width="350" /&gt;
              
              &lt;!-- A ContentControl --&gt;
              &lt;sdk:Label Height="24" HorizontalAlignment="Left" Margin="410,341,0,0" Name="Label_ContentControl" 
                   VerticalAlignment="Top" Width="346" Content="Content Control:"/&gt;
              &lt;ContentControl Height="30" HorizontalAlignment="Left" Margin="410,361,0,0" 
                              Name="ContentControl1" VerticalAlignment="Top" Width="346" 
                              FontSize="20" Foreground="Red" /&gt;
              
              &lt;!-- A Button --&gt;
              &lt;sdk:Label Height="24" HorizontalAlignment="Left" Margin="410,424,0,0" Name="Label_Button" 
                   VerticalAlignment="Top" Width="346" Content="Button:"/&gt;
              &lt;Button Height="30" HorizontalAlignment="Left" Margin="410,448,0,0" 
                      Name="Button1" VerticalAlignment="Top" Width="346" /&gt;
              
              &lt;!-- Provide the instructions on how to use the sample code. --&gt;
              &lt;TextBlock Height="52" HorizontalAlignment="Left" Name="TextBlock1" VerticalAlignment="Top" Width="756" TextWrapping="Wrap" 
                         Text="Click the 'Display credit information' Button to display credit information in various controls." /&gt;
              
            &lt;/Grid&gt;
            </code>
            <code title="Example CS1" description="" lang="CS">
            private void ButtonAttributionTemplate_Click(object sender, System.Windows.RoutedEventArgs e)
            {
              // Get the OpenStreetMapLayer.
              ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer myOpenStreetMapLayer = null;
              myOpenStreetMapLayer = (ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer)(Map1.Layers[0]);
              
              // Display the OpenStreetMapLayer credit information via the ESRI Attribution Control.
              Attribution1.Layers = Map1.Layers;
              
              // Display the OpenStreetMapLayer credit information via a Microsoft ContentControl.
              ContentControl1.ContentTemplate = myOpenStreetMapLayer.AttributionTemplate;
              ContentControl1.Content = myOpenStreetMapLayer;
              
              // Display the OpenStreetMapLayer credit information via a Button.
              Button1.ContentTemplate = myOpenStreetMapLayer.AttributionTemplate;
              Button1.Content = myOpenStreetMapLayer;
            }
            </code>
            <code title="Example VB1" description="" lang="VB.NET">
            Private Sub ButtonAttributionTemplate_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)
              
              ' Get the OpenStreetMapLayer.
              Dim myOpenStreetMapLayer As ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer
              myOpenStreetMapLayer = CType(Map1.Layers.Item(0), ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer)
              
              ' Display the OpenStreetMapLayer credit information via the ESRI Attribution Control.
              Attribution1.Layers = Map1.Layers
              
              ' Display the OpenStreetMapLayer credit information via a Microsoft ContentControl.
              ContentControl1.ContentTemplate = myOpenStreetMapLayer.AttributionTemplate
              ContentControl1.Content = myOpenStreetMapLayer
              
              ' Display the OpenStreetMapLayer credit information via a Button.
              Button1.ContentTemplate = myOpenStreetMapLayer.AttributionTemplate
              Button1.Content = myOpenStreetMapLayer
              
            End Sub
            </code>
            </example>
        </member>
        <member name="T:ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer.MapStyle">
            <summary>
            MapStyle
            </summary>
        </member>
        <member name="F:ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer.MapStyle.Mapnik">
            <summary>
            Mapnik
            </summary>
        </member>
        <member name="F:ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer.MapStyle.CycleMap">
            <summary>
            Cycle Map
            </summary>
        </member>
        <member name="F:ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer.MapStyle.NoName">
            <summary>
            No Name
            </summary>
        </member>
        <member name="T:ESRI.ArcGIS.Client.Toolkit.DataSources.OpenStreetMapLayer.TileServerList">
            <summary>
            Holds a list of string urls to tile servers.
            </summary>
        </member>
        <member name="T:ESRI.ArcGIS.Client.Toolkit.DataSources.WmsLayer">
            <summary>
            A layer for OGC Web Map Services.
            </summary>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.WmsLayer.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:ESRI.ArcGIS.Client.Toolkit.DataSources.WmsLayer"/> class.
            </summary>
        </member>
        <member name="F:ESRI.ArcGIS.Client.Toolkit.DataSources.WmsLayer.ImageFormatProperty">
            <summary>
            Identifies the <see cref="P:ESRI.ArcGIS.Client.Toolkit.DataSources.WmsLayer.ImageFormat"/> dependency property.
            </summary>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.WmsLayer.Initialize">
            <summary>
            Initializes this a WMS layer.  Calls GetCapabilities if SkipGetCapabilities is false. 
            </summary>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.WmsLayer.CreateLayerInfos(System.Xml.Linq.XElement,System.String,System.String)">
            <summary>
            Creates the list of layer infos from the layers XElement.
            </summary>
            <param name="layers">The layers XElement.</param>
            <param name="ns">The namespace name.</param>
            <param name="inheritedAttribution">The inherited attribution.</param>
            <returns></returns>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.WmsLayer.CreateLayerInfo(System.Xml.Linq.XElement,System.String,System.String)">
            <summary>
            Creates the layer info from the layer XElement.
            </summary>
            <param name="layer">The layer XElement.</param>
            <param name="ns">The namespace name.</param>
            <param name="inheritedAttribution">The inherited attribution.</param>
            <returns></returns>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.WmsLayer.GetUrl(ESRI.ArcGIS.Client.Geometry.Envelope,System.Int32,System.Int32,ESRI.ArcGIS.Client.DynamicMapServiceLayer.OnUrlComplete)">
            <summary>
            Gets the URL. Override from DynamicMapServiceLayer
            </summary>
            <param name="extent">The extent.</param>
            <param name="width">The width.</param>
            <param name="height">The height.</param>
            <param name="onComplete">OnUrlComplete delegate.</param>
            <remarks>
            The Map has a private method loadLayerInView which calls Layer.Draw.   
            The DynamicMapServiceLayer abstract class overrides the Draw method and calls 
            DynamicMapServiceLayer.GetUrl which must be implemented in a subclass.   
            The last parameter is the OnUrlComplete delegate, which is used to pass the appropriate values 
            (url, width, height, envelope) to the private DynamicMapServiceLayer.getUrlComplete method.
            </remarks>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.WmsLayer.QueryLegendInfos(System.Action{ESRI.ArcGIS.Client.LayerLegendInfo},System.Action{System.Exception})">
            <summary>
            Queries for the legend infos of a layer.
            </summary>
            <remarks>
            The returned result is encapsulated in a <see cref="T:ESRI.ArcGIS.Client.LayerLegendInfo"/> object.
            This object represents the legend of the map service layer and contains a collection of LayerLegendInfos (one by sublayer)
            </remarks>
            <param name="callback">The method to call on completion.</param>
            <param name="errorCallback">The method to call in the event of an error.</param>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.WmsLayer.CreateLegendInfos(System.Collections.Generic.IEnumerable{ESRI.ArcGIS.Client.Toolkit.DataSources.WmsLayer.LayerInfo})">
            <summary>
            Creates the list of legend infos from the layer infos.
            </summary>
            <param name="layerInfos">The layer infos.</param>
            <returns></returns>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.WmsLayer.CreateLegendInfo(ESRI.ArcGIS.Client.Toolkit.DataSources.WmsLayer.LayerInfo)">
            <summary>
            Creates the legend info from a layer info.
            </summary>
            <param name="layerInfo">The layer info.</param>
            <returns></returns>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.WmsLayer.GetLayerVisibility(System.Int32)">
            <summary>
            Gets the sub-layer visibility.
            </summary>
            <param name="layerID">The sub-layer ID.</param>
            <returns>The sub-layer visibility</returns>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.WmsLayer.SetLayerVisibility(System.Int32,System.Boolean)">
            <summary>
            Sets the sublayer visibility.
            </summary>
            <param name="layerID">The sublayer ID.</param>
            <param name="visible">The sublayer visibility.</param>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.WmsLayer.SetVisibleLayers">
            <summary>
            Init the visibility of the layers from the visibleLayers array
            When a layer is in the array visibleLayers, it is visible (whatever the visibility of its parent) and all its descendants are visible
            so in the LayerTree we have to set the visibility for all ascendants and all descendants.
            </summary>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.WmsLayer.Url">
            <summary>
            Required.  Gets or sets the URL to a WMS service endpoint.  
            For example, 
            http://sampleserver1.arcgisonline.com/ArcGIS/services/Specialty/ESRI_StatesCitiesRivers_USA/MapServer/WMSServer,
            http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r.cgi.
            </summary>
            <value>The URL.</value>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.WmsLayer.ImageFormat">
            <summary>
            Gets or sets the image format being used by the service.
            </summary>
            <remarks>
            The image format must be a supported MimeType name, supported by the service and the framework.
            </remarks>
            <example>
            <code>
            myWmsLayer.ImageFormat = "image/png";
            </code>
            </example>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.WmsLayer.SupportedImageFormats">
            <summary>
            Gets a collection of image formats supported by the WMS service.
            </summary>
            <remarks>
            This property is only set after layer initialization completes and 
            <see cref="P:ESRI.ArcGIS.Client.Toolkit.DataSources.WmsLayer.SkipGetCapabilities"/> is <c>false</c>.
            </remarks>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.WmsLayer.Layers">
            <summary>
            Required. Gets or sets the unique layer ids in a WMS service.  
            Each id is a string value.  At least one layer id must be defined.   
            </summary>
            <value>A string array of layer ids.</value>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.WmsLayer.ProxyUrl">
            <summary>
            Optional. Gets or sets the URL to a proxy service that brokers Web requests between the client application and a 
            WMS service. Use a proxy service when the WMS service is not hosted on a site that provides a cross domain 
            policy file (clientaccesspolicy.xml or crossdomain.xml). 
            You can also use a proxy to convert png images to a bit-depth that supports transparency in Silverlight.
            </summary>
            <value>The proxy URL string.</value>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.WmsLayer.Version">
            <summary>
            Optional. Gets or sets the WMS version.  If SkipGetCapabilities property is set to true, this value determines version requested.  
            If SkipGetCapabilities is false, this value determines version to retrieve.  If no value specified, default value returned from 
            the site will be used.
            </summary>
            <value>The version string.</value>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.WmsLayer.SkipGetCapabilities">
            <summary>
            Optional. Gets or sets a value indicating whether to skip a request to get capabilities. 
            Default value is false.  Set SkipGetCapabilities if the site hosting the WMS service does not provide a
            cross domain policy file and you do not have a proxy page.  In this case, you must set the WMS service version.
            If true, the initial and full extent of the WMS layer will not be defined.
            </summary>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.WmsLayer.MapUrl">
            <summary>
            Optional. Gets or sets the map URL.		
            </summary>
            <value>The map URL.</value>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.WmsLayer.Title">
            <summary>
            Gets or sets the title metadata for this service.
            </summary>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.WmsLayer.Abstract">
            <summary>
            Gets the abstract metadata for this service.
            </summary>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.WmsLayer.LayerList">
            <summary>
            Gets a list of layers available in this service.
            </summary>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.WmsLayer.SupportedSpatialReferenceIDs">
            <summary>
            Gets or sets the supported spatial reference IDs.
            </summary>
            <value>The supported spatial reference IDs.</value>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.WmsLayer.AttributionTemplate">
            <summary>		
            Gets the attribution template of an WMS GetCapabilities XML scheme.		
            </summary>
            <value>The attribution template.</value>
        </member>
        <member name="E:ESRI.ArcGIS.Client.Toolkit.DataSources.WmsLayer.LegendChanged">
            <summary>
            Occurs when the legend of the layer changed.
            </summary>
            <remarks>
            Actually, for this kind of layer, the legend never changes after initialization.
            </remarks>
        </member>
        <member name="E:ESRI.ArcGIS.Client.Toolkit.DataSources.WmsLayer.VisibilityChanged">
            <summary>
            Occurs when the visibility of sublayers changed.
            </summary>
        </member>
        <member name="T:ESRI.ArcGIS.Client.Toolkit.DataSources.WmsLayer.LayerInfo">
            <summary>
            WMS LayerInfo
            </summary>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.WmsLayer.LayerInfo.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:ESRI.ArcGIS.Client.Toolkit.DataSources.WmsLayer.LayerInfo"/> class.
            </summary>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.WmsLayer.LayerInfo.#ctor(System.String,System.String,System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:ESRI.ArcGIS.Client.Toolkit.DataSources.WmsLayer.LayerInfo"/> class.
            </summary>
            <param name="name">The name.</param>
            <param name="title">The title.</param>
            <param name="legendUrl">The legend URL.</param>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.WmsLayer.LayerInfo.Name">
            <summary>
            Gets the name of the layer.
            </summary>
            <value>The name.</value>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.WmsLayer.LayerInfo.Title">
            <summary>
            Gets the title of the layer.
            </summary>
            <value>The title.</value>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.WmsLayer.LayerInfo.Abstract">
            <summary>
            Gets the abstract for the layer.
            </summary>
            <value>The abstract.</value>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.WmsLayer.LayerInfo.Attribution">
            <summary>
            Gets or sets the attribution text for the layer.
            </summary>
            <value>The attribution text.</value>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.WmsLayer.LayerInfo.Extent">
            <summary>
            Gets the extent of the layer.
            </summary>
            <value>The extent.</value>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.WmsLayer.LayerInfo.ChildLayers">
            <summary>
            Gets the child layers.
            </summary>
            <value>The child layers.</value>
        </member>
        <member name="T:ESRI.ArcGIS.Client.Toolkit.DataSources.AttributionInfo">
            <summary>
            Attribution class used to store copyright information.
            </summary>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.AttributionInfo.Title">
            <summary>
            Gets or sets the title.
            </summary>
            <value>The title.</value>
        </member>
        <member name="T:ESRI.ArcGIS.Client.Toolkit.DataSources.WmtsLayer">
            <summary>
            A layer that conforms to the Web Map Tiling Service (WMTS)  
            <a href="http://www.opengeospatial.org" target="_blank">Open GIS Consortium (OGC)</a> standard. WMTS is a 
            cached service that accesses pre-created tiles from a cache on a server’s hard drive instead of 
            dynamically rendering images.
            </summary>
            <remarks>
            <para>
            The full WMTS standard can be found on the 
            <a href="http://www.opengeospatial.org/standards/wmts" target="_blank">OpenGIS Web Map Tile Service Implementation Standard</a> 
            web page. As of ArcGIS Server version 10.1 serving WMTS layers as a native REST service is supported.
            </para>
            <para>
            In order to consume a WmtsLayer successfully the following Properties must be set:
            </para>
            <list type="bullet">
              <item>
              <see cref="P:ESRI.ArcGIS.Client.Toolkit.DataSources.WmtsLayer.Url">Url</see> (The WMTS service endpoint.)
              </item>
              <item>
              <see cref="P:ESRI.ArcGIS.Client.Toolkit.DataSources.WmtsLayer.ServiceMode">ServiceMode</see> (The WMTS 
              service communication protocol.)
              </item>
            </list>
            <para>
            There are however several other optional Properties/Methods/Events that should also be set in order to 
            avoid problems consuming a WmtsLayer, they are:
            </para>
            <list type="bullet">
              <item>
              <see cref="E:ESRI.ArcGIS.Client.Layer.Initialized">Initialized</see> Method (Method raised when 
              WmtsLayer is being created on the client; useful to get or change information about the layer.)
              </item>
              <item>
              <see cref="E:ESRI.ArcGIS.Client.Layer.InitializationFailed">InitializationFailed</see> Event (Method 
              raised if the WmtsLayer has a problem being created.)
              </item>
              <item>
              <see cref="P:ESRI.ArcGIS.Client.Toolkit.DataSources.WmtsLayer.ProxyUrl">ProxyUrl</see> Property (A proxy 
              service to broker web requests between the WMTS service and the web client.)
              </item>
              <item>
              <see cref="P:ESRI.ArcGIS.Client.Toolkit.DataSources.WmtsLayer.Layer">Layer</see> Property (Name of a 
              single layer in a WMTS service; there can be multiple layers per service.)
              </item>
              <item>
              <see cref="P:ESRI.ArcGIS.Client.Layer.ID">ID</see> Property (The unique ID of the layer in the Map control.)
              </item>
            </list>
            <para>
            A single WMTS service can have multiple layers. For each WmtsLayer instance, only one layer is drawn at a 
            time. In order to discover what layers are available in a WMTS service, append the string 
            '?request=GetCapabilities&amp;service=WMTS&amp;version=1.0.0' to what would be supplied for the WmtsLayer.Url Property 
            in the address bar of a web browser and the full details will be provided in an XML document. A few example 
            strings of obtaining the capabilities of a WMTS service are:
            </para>
            <list type="bullet">
              <item>
              http://v2.suite.opengeo.org/geoserver/gwc/service/wmts?request=GetCapabilities&amp;service=WMTS&amp;version=1.0.0
              </item>
              <item>
              http://MyTestServer:6080/arcgis/rest/services/cachedservices/MyTestWMTSService/MapServer/WMTS?request=GetCapabilities&amp;service=WMTS&amp;version=1.0.0
              </item>
            </list>
            <para>
            By default if the WmtsLayer.Layer Property is not specified, the first layer respecting the 
            WmtsLayer.TileMatrixSet will be used. When specifying the WmtsLayer.Layer Property at runtime in the 
            code-behind, the WmtsLayer’s Refresh Method fires which in turn invokes the WmtsLayer’s Initialized Event 
            which will cause a re-draw of the layer in the Map Control.
            </para>
            <para>
            It is important to specify the correct 
            <see cref="T:ESRI.ArcGIS.Client.Toolkit.DataSources.WmtsLayer.WmtsServiceMode">WmtsLayer.WmtsServiceMode</see> 
            Enumeration in the WmtsLayer.ServiceMode Property or the WmtsLayer may not be created properly. The two 
            available WmtsLayer.WmtsServiceMode Enumeration options available are <b>KVP</b> and <b>RESTful</b>. WMTS 
            services provided by ArcGIS Server produce <b>RESTful</b> WmtsLayer.WmtsServiceMode services. The 
            <b>KVP</b> WmtsLayer.WmtsServiceMode means HTTP 'Key/Value Pair' encoding; details on this OGC specification 
            can found by downloading the 
            <a href="http://portal.opengeospatial.org/files/?artifact_id=36263&amp;version=2format=pdf" target="_blank">WCS Extension -- KVP Protocol</a> 
            document.
            </para>
            <para>
            A call to the WmtsLayer is Asynchronous. As a result, this means that you cannot obtain valid Read (VB.NET) 
            or get (C#) Property values until information has been returned from a WMTS server to the Client application. 
            You can safely obtain valid Read/get Property information in the Initialized, PropertyChanged, 
            TileLoaded, and TileLoading Events or from a function/sub/method that occurs after these Events fire. If you 
            try to obtain Read/get Property information before these Events fire you will obtain invalid or null/Nothing 
            information for the particular Property in question. 
            </para>
            </remarks>
            <example>
            <para>
            <b>How to use:</b>
            </para>
            <para>
            Select a layer name in the ListBox and click the 'Get WMTSLayer information' button to display various 
            WMTSLayer and WMTSLayer.LayerInfo Property information. The Map will automatically zoom to the Extent 
            of the layer. Properties with the words '[Count]' gives the count of the number of items in an 
            IEnumerable; more coding could be done in the code-behind to dig deeper into the collection.
            </para>
            <para>
            The XAML code in this example is used in conjunction with the code-behind (C# or VB.NET) to demonstrate
            the functionality.
            </para>
            <para>
            The following screen shot corresponds to the code example in this page.
            </para>
            <para>
            <img border="0" alt="Example of displaying a WmtsLayer and detailed information about the service." src=" C:\ArcGIS\dotNET\API SDK\Main\ArcGISSilverlightSDK\LibraryReference\images\Client.Toolkit.DataSources.WmtsLayer.png"/>
            </para>
            <code title="Example XAML1" description="" lang="XAML">
            &lt;Grid x:Name="LayoutRoot" Background="White"&gt;
              
              &lt;!-- Add a Map Control. --&gt;
              &lt;esri:Map Background="White" HorizontalAlignment="Left" Name="Map1" 
                        VerticalAlignment="Top" WrapAround="True" Height="400" Width="775" Margin="12,80,0,0"&gt;
                &lt;esri:Map.Layers&gt;
                  &lt;esri:LayerCollection&gt;
                      
                    &lt;!-- 
                    Add a sample WmtsLayer. Setting the 'ID' Property is good if you want to access the WmtsLayer in code-behind.
                    It is mandatory that you set the correct 'ServiceMode' Property. Setting the 'InitializationFailed' Event is useful
                    to troubleshoot if the WmtsLayer fails to load. A 'ProxyUrl' is needed to test this particular service; it is not
                    always necessary depending on your configuration (i.e. local web service internal to your network). Use the 
                    'Initialized' Method to gain access to various Properties/Methods of the WmtsLayer.
                    --&gt;
                    &lt;esri:WmtsLayer ID="WMTS1"
                                    Url="http://v2.suite.opengeo.org/geoserver/gwc/service/wmts"
                                    Initialized="WmtsLayer_Initialized"
                                    ProxyUrl="http://serverapps.esri.com/SilverlightDemos/ProxyPage/proxy.ashx"
                                    InitializationFailed="WmtsLayer_InitializationFailed"
                                    ServiceMode="KVP"
                                    /&gt;
                  &lt;/esri:LayerCollection&gt;
                &lt;/esri:Map.Layers&gt;
              &lt;/esri:Map&gt;
              
              &lt;!-- 
              Add a Button to allow the user to change the sub-Layer that is displaying in the Map along with information
              about the WmtsLayer service.
              --&gt;
              &lt;Button Content="Get WMTSLayer information" Height="23" HorizontalAlignment="Left" Margin="518,484,0,0" 
                      Name="Button1" VerticalAlignment="Top" Width="269" Click="Button1_Click"/&gt;
              &lt;ListBox Height="103" HorizontalAlignment="Left" Margin="519,513,0,0" Name="ListBox1" 
                       VerticalAlignment="Top" Width="269" /&gt;
              
              &lt;!-- Display various WMTSLayer Property information. --&gt;
              &lt;sdk:Label Height="28" HorizontalAlignment="Left" Margin="170,479,0,0" Name="Label_WMTSLayerProperties" 
                         VerticalAlignment="Top" Width="199" Content="WMTSLayer Properties" FontSize="14" FontWeight="Bold"/&gt;
              
              &lt;!-- FullExtent--&gt;
              &lt;sdk:Label Height="28" HorizontalAlignment="Left" Margin="7,508,0,0" Name="Label_FullExtent" 
                         VerticalAlignment="Top" Width="120" Content="FullExtent:" /&gt;
              &lt;TextBox Height="23" HorizontalAlignment="Left" Margin="101,508,0,0" 
                       Name="TextBox_FullExtent" VerticalAlignment="Top" Width="400" /&gt;
              
              &lt;!--Description--&gt;
              &lt;sdk:Label Height="28" HorizontalAlignment="Left" Margin="7,540,0,0" Name="Label_Description" 
                         VerticalAlignment="Top" Width="88" Content="Description:"/&gt;
              &lt;TextBox Height="23" HorizontalAlignment="Left" Margin="101,536,0,0" Name="TextBox_Description" 
                       VerticalAlignment="Top" Width="400" /&gt;
              
              &lt;!--ImageFormat--&gt;
              &lt;sdk:Label Height="28" HorizontalAlignment="Left" Margin="7,569,0,0" Name="Label_ImageFormat" 
                         VerticalAlignment="Top" Width="88" Content="ImageFormat:"/&gt;
              &lt;TextBox Height="23" HorizontalAlignment="Left" Margin="101,565,0,0" Name="TextBox_ImageFormat" 
                       VerticalAlignment="Top" Width="161" /&gt;
              
              &lt;!--Layer--&gt;
              &lt;sdk:Label Height="28" HorizontalAlignment="Left" Margin="268,565,0,0" Name="Label_Layer" 
                         VerticalAlignment="Top" Width="88" Content="Layer:"/&gt;
              &lt;TextBox Height="23" HorizontalAlignment="Left" Margin="309,565,0,0" Name="TextBox_Layer" 
                       VerticalAlignment="Top" Width="192" /&gt;
              
              &lt;!--LayerInfos--&gt;
              &lt;sdk:Label Height="28" HorizontalAlignment="Left" Margin="7,596,0,0" Name="Label_LayerInfos" 
                         VerticalAlignment="Top" Width="140" Content="LayerInfos [Count]:"/&gt;
              &lt;TextBox Height="23" HorizontalAlignment="Left" Margin="119,593,0,0" Name="TextBox_LayerInfos" 
                       VerticalAlignment="Top" Width="89" /&gt;
              
              &lt;!--ProxyUrl--&gt;
              &lt;sdk:Label Height="28" HorizontalAlignment="Left" Margin="7,625,0,0" Name="Label_ProxyUrl" 
                         VerticalAlignment="Top" Width="88" Content="ProxyUrl:"/&gt;
              &lt;TextBox Height="23" HorizontalAlignment="Left" Margin="101,622,0,0" Name="TextBox_ProxyUrl" 
                       VerticalAlignment="Top" Width="400" /&gt;
              
              &lt;!-- ServiceMode--&gt;
              &lt;sdk:Label Height="28" HorizontalAlignment="Left" Margin="225,597,0,0" Name="Label_ServiceMode" 
                         VerticalAlignment="Top" Width="88" Content="ServiceMode:"/&gt;
              &lt;TextBox Height="23" HorizontalAlignment="Left" Margin="309,593,0,0" Name="TextBox_ServiceMode" 
                       VerticalAlignment="Top" Width="192" /&gt;
              
              &lt;!--Style--&gt;
              &lt;sdk:Label Height="28" HorizontalAlignment="Left" Margin="7,650,0,0" Name="Label_Style" 
                         VerticalAlignment="Top" Width="88" Content="Style:"/&gt;
              &lt;TextBox Height="23" HorizontalAlignment="Left" Margin="101,650,0,0" Name="TextBox_Style" 
                       VerticalAlignment="Top" Width="161" /&gt;
              
              &lt;!--TileMatrixSet--&gt;
              &lt;sdk:Label Height="28" HorizontalAlignment="Left" Margin="268,654,0,0" Name="Label_TileMatrixSet" 
                         VerticalAlignment="Top" Width="88" Content="TileMatrixSet:"/&gt;
              &lt;TextBox Height="23" HorizontalAlignment="Left" Margin="352,654,0,0" Name="TextBox_TileMatrixSet" 
                       VerticalAlignment="Top" Width="149" /&gt;
              
              &lt;!--Title--&gt;
              &lt;sdk:Label Height="28" HorizontalAlignment="Left" Margin="7,688,0,0" Name="Label_Title" 
                         VerticalAlignment="Top" Width="120" Content="Title:"/&gt;
              &lt;TextBox Height="23" HorizontalAlignment="Left" Margin="101,684,0,0" Name="TextBox_Title" 
                       VerticalAlignment="Top" Width="400" /&gt;
              
              &lt;!--Token--&gt;
              &lt;sdk:Label Height="28" HorizontalAlignment="Left" Margin="7,717,0,0" Name="Label_Token" 
                         VerticalAlignment="Top" Width="120" Content="Token:"/&gt;
              &lt;TextBox Height="23" HorizontalAlignment="Left" Margin="101,713,0,0" Name="TextBox_Token" 
                       VerticalAlignment="Top" Width="400" /&gt;
              
              &lt;!--Url--&gt;
              &lt;sdk:Label Height="28" HorizontalAlignment="Left" Margin="7,746,0,0" Name="Label_Url" 
                         VerticalAlignment="Top" Width="120" Content="Url:"/&gt;
              &lt;TextBox Height="23" HorizontalAlignment="Left" Margin="101,742,0,0" Name="TextBox_Url" 
                       VerticalAlignment="Top" Width="400" /&gt;
              
              &lt;!--Version--&gt;
              &lt;sdk:Label Height="28" HorizontalAlignment="Left" Margin="7,775,0,0" Name="Label_Version" 
                         VerticalAlignment="Top" Width="120" Content="Version:"/&gt;
              &lt;TextBox Height="23" HorizontalAlignment="Left" Margin="101,771,0,0" Name="TextBox_Version" 
                       VerticalAlignment="Top" Width="400" /&gt;
              
              
              &lt;!--Display detailed WMTSLayer.LayerInfo about the specific sub-Layer that is being displayed. --&gt;
              &lt;sdk:Label Height="28" HorizontalAlignment="Left" Margin="543,622,0,0" Name="Label_WMTSLayerLayerInfo" 
                         VerticalAlignment="Top" Width="187" Content="WMTSLayer.LayerInfo" FontSize="14" FontWeight="Bold" /&gt;
              
              &lt;!--Abstract--&gt;
              &lt;sdk:Label Height="28" HorizontalAlignment="Left" Margin="511,656,0,0" Name="Label_Abstract" 
                         VerticalAlignment="Top" Width="50" Content="Abstract:"/&gt;
              &lt;TextBox Height="23" HorizontalAlignment="Left" Margin="569,652,0,0" Name="TextBox_Abstract" 
                       VerticalAlignment="Top" Width="67" /&gt;
              
              &lt;!--Formats--&gt;
              &lt;sdk:Label Height="28" HorizontalAlignment="Left" Margin="642,654,0,0" Name="Label_Formats" 
                         VerticalAlignment="Top" Width="97" Content="Formats [Count]:"/&gt;
              &lt;TextBox Height="23" HorizontalAlignment="Left" Margin="743,652,0,0" Name="TextBox_Formats" 
                       VerticalAlignment="Top" Width="44" /&gt;
              
              &lt;!--Identifier--&gt;
              &lt;sdk:Label Height="28" HorizontalAlignment="Left" Margin="508,683,0,0" Name="Label_Identifier" 
                         VerticalAlignment="Top" Width="60" Content="Identifier:"/&gt;
              &lt;TextBox Height="23" HorizontalAlignment="Left" Margin="571,684,0,0" Name="TextBox_Identifier" 
                       VerticalAlignment="Top" Width="216" /&gt;
              
              &lt;!--Styles--&gt;
              &lt;sdk:Label Height="28" HorizontalAlignment="Left" Margin="511,713,0,0" Name="Label_Styles" 
                         VerticalAlignment="Top" Width="86" Content="Styles [Count]:"/&gt;
              &lt;TextBox Height="23" HorizontalAlignment="Left" Margin="603,713,0,0" Name="TextBox_Styles" 
                       VerticalAlignment="Top" Width="184" /&gt;
              
              &lt;!--TileMatrixSets--&gt;
              &lt;sdk:Label Height="28" HorizontalAlignment="Left" Margin="507,742,0,0" Name="Label_TileMatrixSets" 
                         VerticalAlignment="Top" Width="129" Content="TileMatrixSets [Count]:"/&gt;
              &lt;TextBox Height="23" HorizontalAlignment="Left" Margin="642,740,0,0" Name="TextBox_TileMatrixSets" 
                       VerticalAlignment="Top" Width="145" /&gt;
              
              &lt;!--Title--&gt;
              &lt;sdk:Label Height="28" HorizontalAlignment="Left" Margin="513,768,0,0" Name="Label_Title2" 
                         VerticalAlignment="Top" Width="48" Content="Title:"/&gt;
              &lt;TextBox Height="23" HorizontalAlignment="Left" Margin="554,769,0,0" Name="TextBox_Title2" 
                       VerticalAlignment="Top" Width="236" /&gt;
              
              
              &lt;!-- Provide the instructions on how to use the sample code. --&gt;
              &lt;TextBlock Height="74" HorizontalAlignment="Left" Name="TextBlock1" VerticalAlignment="Top" Width="756" 
                     TextWrapping="Wrap" Margin="12,12,0,0" 
                     Text="Select a layer name in the ListBox and click the 'Get WMTSLayer information' button to display
                     various WMTSLayer and WMTSLayer.LayerInfo Property information. The Map will automatically zoom to the
                     Extent of the layer. Properties with the words '[Count]' gives the count of the number of items in 
                     an IEnumerable; more coding could be done in the code-behind to dig deeper into the collection." /&gt;
              
            &lt;/Grid&gt;
            </code>
            <code title="Example CS1" description="" lang="CS">
            private void Button1_Click(object sender, System.Windows.RoutedEventArgs e)
            {
              // This function takes the user choice for a specific WmtsLayer.Layer from a ListBox and refreshes 
              // the Map using that layer.
              
              // Get the user choice for the name of the WmtsLayer.Layer.
              string theTitle = ListBox1.SelectedItem.ToString();
              
              // Get the WmtsLayer that was defined in XAML.
              ESRI.ArcGIS.Client.Toolkit.DataSources.WmtsLayer theWMTSLayer = (ESRI.ArcGIS.Client.Toolkit.DataSources.WmtsLayer)Map1.Layers["WMTS1"];
              
              // Set the specific layer to display in the WmtsLayer. This will internally cause a WmtsLayer.Refresh
              // which in turn causes the WmtsLayer.Initialized Method to execute.
              theWMTSLayer.Layer = theTitle;
            }
            
            private void WmtsLayer_Initialized(object sender, System.EventArgs e)
            {
              // This function loops through all of the sub-Layers in a WmtsLayer service and displays information
              // about the WmtsLayer service in general and details about a particular WmtsLayer.Layer specified
              // by the user choice. This function initiates whenever the WmtsLayer first initializes or as a result 
              // of specifying a different WmtsLayer.Layer. 
              
              // Clear out all of the sub-Layer names of the WmtsLayer service.
              ListBox1.Items.Clear();
              
              // Get the WmtsLayer that was defined in XAML.
              ESRI.ArcGIS.Client.Toolkit.DataSources.WmtsLayer theWMTSLayer = (ESRI.ArcGIS.Client.Toolkit.DataSources.WmtsLayer)Map1.Layers["WMTS1"];
              
              // Get all of the sub-Layer information from the WmtsLayer.
              IEnumerable&lt;ESRI.ArcGIS.Client.Toolkit.DataSources.WmtsLayer.WmtsLayerInfo&gt; theLayers = theWMTSLayer.LayerInfos;
              if (theLayers != null)
              {
                foreach (ESRI.ArcGIS.Client.Toolkit.DataSources.WmtsLayer.WmtsLayerInfo oneWMTSLayerInfo in theLayers)
                {
              	//Display the name of the WmtsLayer sub-Layer's in the ListBox. 
              	ListBox1.Items.Add(oneWMTSLayerInfo.Title);
                }
              }
              
              // Set the Map.Extent to the WmtsLayer sub-Layer and display the numerical extent in a TextBox.
              if (theWMTSLayer.FullExtent != null)
              {
                Map1.Extent = theWMTSLayer.FullExtent;
                TextBox_FullExtent.Text = theWMTSLayer.FullExtent.ToString();
              }
              
              // Display the Description of the WmtsLayer service.
              if (theWMTSLayer.Description != null)
              {
                TextBox_Description.Text = theWMTSLayer.Description;
              }
              
              // Display the ImageFormat of the WmtsLayer service.
              if (theWMTSLayer.ImageFormat != null)
              {
                TextBox_ImageFormat.Text = theWMTSLayer.ImageFormat;
              }
              
              // Display the currently displaying sub-Layer name of the WmtsLayer service.
              if (theWMTSLayer.Layer != null)
              {
                TextBox_Layer.Text = theWMTSLayer.Layer;
              }
              
              // Display the LayerInfos.Count of the WmtsLayer service. More information is available if you
              // care to loop through the IEnumerable&lt;WmtsLayer.WmtsLayerInfo&gt; objects.
              if (theWMTSLayer.LayerInfos != null)
              {
                TextBox_LayerInfos.Text = theWMTSLayer.LayerInfos.Count.ToString();
              }
              
              // Display the ProxyUrl of the WmtsLayer service.
              if (theWMTSLayer.ProxyUrl != null)
              {
                TextBox_ProxyUrl.Text = theWMTSLayer.ProxyUrl;
              }
              
              // Display the ServiceMode Enumeration of the WmtsLayer service.
              TextBox_ServiceMode.Text = theWMTSLayer.ServiceMode.ToString(); //An Enumeration.
              
              // Display the Style of the WmtsLayer service.
              if (theWMTSLayer.Style != null)
              {
                TextBox_Style.Text = theWMTSLayer.Style;
              }
              
              // Display the TileMatrix of the WmtsLayer service.
              if (theWMTSLayer.TileMatrixSet != null)
              {
                TextBox_TileMatrixSet.Text = theWMTSLayer.TileMatrixSet;
              }
              
              // Display the Title of the WmtsLayer service. Select the name of the Title in the ListBox to
              // show which sub-Layer is currently being displayed in the Map.
              if (theWMTSLayer.Title != null)
              {
                TextBox_Title.Text = theWMTSLayer.Title;
                ListBox1.SelectedItem = theWMTSLayer.Title;
              }
              
              // Display the Token of the WmtsLayer service.
              if (theWMTSLayer.Token != null)
              {
                TextBox_Token.Text = theWMTSLayer.Token;
              }
              
              // Display the Url of the WmtsLayer service.
              if (theWMTSLayer.Url != null)
              {
                TextBox_Url.Text = theWMTSLayer.Url;
              }
              
              // Display the Version of the WmtsLayer service.
              if (theWMTSLayer.Version != null)
              {
                TextBox_Version.Text = theWMTSLayer.Version;
              }
              
              // Get the WmtsLayer.Title from the user choice in the ListBox. This will be used to display detailed 
              // information (WmtsLayer.WmtsLayerInfo) about the specific WmtsLayer.Layer currently being shown in the map.
              string theTitle = null;
              if (ListBox1.SelectedItem != null)
              {
                theTitle = ListBox1.SelectedItem.ToString();
              }
              
              // Loop through all of the sub-Layers of the WmtsLayer and display WmtsLayer.WmtsLayerInfo Property
              // information that match the user choice in the ListBox.
              if (theLayers != null)
              {
                foreach (ESRI.ArcGIS.Client.Toolkit.DataSources.WmtsLayer.WmtsLayerInfo oneWMTSLayerInfo in theLayers)
                {
                  if (oneWMTSLayerInfo.Title == theTitle)
                  {
                    // Display the Abstract of the WmtsLayer.WmtsLayerInfo sub-Layer.
                    if (oneWMTSLayerInfo.Abstract != null)
                    {
                      TextBox_Abstract.Text = oneWMTSLayerInfo.Abstract;
                    }
                    
                    // Display the Formats of the WmtsLayer.WmtsLayerInfo sub-Layer. More information is available if you
                    // care to loop through the IEnumerable&lt;String&gt; objects.
                    if (oneWMTSLayerInfo.Formats != null)
                    {
                      TextBox_Formats.Text = oneWMTSLayerInfo.Formats.Count.ToString();
                    }
                    
                    // Display the Identifier of the WmtsLayer.WmtsLayerInfo sub-Layer.
                    if (oneWMTSLayerInfo.Identifier != null)
                    {
                      TextBox_Identifier.Text = oneWMTSLayerInfo.Identifier;
                    }
                    
                    // Display the Styles of the WmtsLayer.WmtsLayerInfo sub-Layer. More information is available if you
                    // care to loop through the IEnumerable&lt;String&gt; objects.
                    if (oneWMTSLayerInfo.Styles != null)
                    {
                      TextBox_Styles.Text = oneWMTSLayerInfo.Styles.Count.ToString();
                    }
                    
                    // Display the TileMatrixSets of the WmtsLayer.WmtsLayerInfo sub-Layer. More information is available if you
                    // care to loop through the IEnumerable&lt;String&gt; objects.
                    if (oneWMTSLayerInfo.TileMatrixSets != null)
                    {
                      TextBox_TileMatrixSets.Text = oneWMTSLayerInfo.TileMatrixSets.Count.ToString();
                    }
                    
                    // Display the Title of the WmtsLayer.WmtsLayerInfo sub-Layer.
                    if (oneWMTSLayerInfo.Title != null)
                    {
                      TextBox_Title2.Text = oneWMTSLayerInfo.Title;
                    }
                  }
                }
              }
            }
            
            private void WmtsLayer_InitializationFailed(object sender, System.EventArgs e)
            {
              // This function displays any error information of the WmtsLayer fails to load.
              
              ESRI.ArcGIS.Client.Layer aLayer = (ESRI.ArcGIS.Client.Layer)sender;
              MessageBox.Show(aLayer.InitializationFailure.Message);
            }
            </code>
            <code title="Example VB1" description="" lang="VB.NET">
            Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)
              
              ' This function takes the user choice for a specific WmtsLayer.Layer from a ListBox and refreshes 
              ' the Map using that layer.
              
              ' Get the user choice for the name of the WmtsLayer.Layer.
              Dim theTitle As String = ListBox1.SelectedItem.ToString
              
              ' Get the WmtsLayer that was defined in XAML.
              Dim theWMTSLayer As ESRI.ArcGIS.Client.Toolkit.DataSources.WmtsLayer = Map1.Layers("WMTS1")
              
              ' Set the specific layer to display in the WmtsLayer. This will internally cause a WmtsLayer.Refresh
              ' which in turn causes the WmtsLayer.Initialized Method to execute.
              theWMTSLayer.Layer = theTitle
              
            End Sub
              
            Private Sub WmtsLayer_Initialized(ByVal sender As System.Object, ByVal e As System.EventArgs)
              
              ' This function loops through all of the sub-Layers in a WmtsLayer service and displays information
              ' about the WmtsLayer service in general and details about a particular WmtsLayer.Layer specified
              ' by the user choice. This function initiates whenever the WmtsLayer first initializes or as a result 
              ' of specifying a different WmtsLayer.Layer. 
              
              ' Clear out all of the sub-Layer names of the WmtsLayer service.
              ListBox1.Items.Clear()
              
              ' Get the WmtsLayer that was defined in XAML.
              Dim theWMTSLayer As ESRI.ArcGIS.Client.Toolkit.DataSources.WmtsLayer = Map1.Layers("WMTS1")
              
              ' Get all of the sub-Layer information from the WmtsLayer.
              Dim theLayers As IEnumerable(Of ESRI.ArcGIS.Client.Toolkit.DataSources.WmtsLayer.WmtsLayerInfo) = theWMTSLayer.LayerInfos
              If theLayers IsNot Nothing Then
                For Each oneWMTSLayerInfo As ESRI.ArcGIS.Client.Toolkit.DataSources.WmtsLayer.WmtsLayerInfo In theLayers
                  'Display the name of the WmtsLayer sub-Layer's in the ListBox. 
                  ListBox1.Items.Add(oneWMTSLayerInfo.Title)
                Next
              End If
              
              ' Set the Map.Extent to the WmtsLayer sub-Layer and display the numerical extent in a TextBox.
              If theWMTSLayer.FullExtent IsNot Nothing Then
                Map1.Extent = theWMTSLayer.FullExtent
                TextBox_FullExtent.Text = theWMTSLayer.FullExtent.ToString
              End If
              
              ' Display the Description of the WmtsLayer service.
              If theWMTSLayer.Description IsNot Nothing Then
                TextBox_Description.Text = theWMTSLayer.Description
              End If
              
              ' Display the ImageFormat of the WmtsLayer service.
              If theWMTSLayer.ImageFormat IsNot Nothing Then
                TextBox_ImageFormat.Text = theWMTSLayer.ImageFormat
              End If
              
              ' Display the currently displaying sub-Layer name of the WmtsLayer service.
              If theWMTSLayer.Layer IsNot Nothing Then
                TextBox_Layer.Text = theWMTSLayer.Layer
              End If
              
              ' Display the LayerInfos.Count of the WmtsLayer service. More information is available if you
              ' care to loop through the IEnumerable(Of WmtsLayer.WmtsLayerInfo) objects.
              If theWMTSLayer.LayerInfos IsNot Nothing Then
                TextBox_LayerInfos.Text = theWMTSLayer.LayerInfos.Count.ToString
              End If
              
              ' Display the ProxyUrl of the WmtsLayer service.
              If theWMTSLayer.ProxyUrl IsNot Nothing Then
                TextBox_ProxyUrl.Text = theWMTSLayer.ProxyUrl
              End If
              
              ' Display the ServiceMode Enumeration of the WmtsLayer service.
              TextBox_ServiceMode.Text = theWMTSLayer.ServiceMode.ToString 'An Enumeration.
              
              ' Display the Style of the WmtsLayer service.
              If theWMTSLayer.Style IsNot Nothing Then
                TextBox_Style.Text = theWMTSLayer.Style
              End If
              
              ' Display the TileMatrix of the WmtsLayer service.
              If theWMTSLayer.TileMatrixSet IsNot Nothing Then
                TextBox_TileMatrixSet.Text = theWMTSLayer.TileMatrixSet
              End If
              
              ' Display the Title of the WmtsLayer service. Select the name of the Title in the ListBox to
              ' show which sub-Layer is currently being displayed in the Map.
              If theWMTSLayer.Title IsNot Nothing Then
                TextBox_Title.Text = theWMTSLayer.Title
                ListBox1.SelectedItem = theWMTSLayer.Title
              End If
              
              ' Display the Token of the WmtsLayer service.
              If theWMTSLayer.Token IsNot Nothing Then
                TextBox_Token.Text = theWMTSLayer.Token
              End If
              
              ' Display the Url of the WmtsLayer service.
              If theWMTSLayer.Url IsNot Nothing Then
                TextBox_Url.Text = theWMTSLayer.Url
              End If
              
              ' Display the Version of the WmtsLayer service.
              If theWMTSLayer.Version IsNot Nothing Then
                TextBox_Version.Text = theWMTSLayer.Version
              End If
              
              ' Get the WmtsLayer.Title from the user choice in the ListBox. This will be used to display detailed 
              ' information (WmtsLayer.WmtsLayerInfo) about the specific WmtsLayer.Layer currently being shown in the map.
              Dim theTitle As String = Nothing
              If ListBox1.SelectedItem IsNot Nothing Then
                theTitle = ListBox1.SelectedItem.ToString
              End If
              
              ' Loop through all of the sub-Layers of the WmtsLayer and display WmtsLayer.WmtsLayerInfo Property
              ' information that match the user choice in the ListBox.
              If theLayers IsNot Nothing Then
                For Each oneWMTSLayerInfo As ESRI.ArcGIS.Client.Toolkit.DataSources.WmtsLayer.WmtsLayerInfo In theLayers
                  If oneWMTSLayerInfo.Title = theTitle Then
                    
                    ' Display the Abstract of the WmtsLayer.WmtsLayerInfo sub-Layer.
                    If oneWMTSLayerInfo.Abstract IsNot Nothing Then
                      TextBox_Abstract.Text = oneWMTSLayerInfo.Abstract
                    End If
                    
                    ' Display the Formats of the WmtsLayer.WmtsLayerInfo sub-Layer. More information is available if you
                    ' care to loop through the IEnumerable(Of String) objects.
                    If oneWMTSLayerInfo.Formats IsNot Nothing Then
                      TextBox_Formats.Text = oneWMTSLayerInfo.Formats.Count.ToString
                    End If
                    
                    ' Display the Identifier of the WmtsLayer.WmtsLayerInfo sub-Layer.
                    If oneWMTSLayerInfo.Identifier IsNot Nothing Then
                      TextBox_Identifier.Text = oneWMTSLayerInfo.Identifier
                    End If
                    
                    ' Display the Styles of the WmtsLayer.WmtsLayerInfo sub-Layer. More information is available if you
                    ' care to loop through the IEnumerable(Of String) objects.
                    If oneWMTSLayerInfo.Styles IsNot Nothing Then
                      TextBox_Styles.Text = oneWMTSLayerInfo.Styles.Count.ToString
                    End If
                    
                    ' Display the TileMatrixSets of the WmtsLayer.WmtsLayerInfo sub-Layer. More information is available if you
                    ' care to loop through the IEnumerable(Of String) objects.
                    If oneWMTSLayerInfo.TileMatrixSets IsNot Nothing Then
                      TextBox_TileMatrixSets.Text = oneWMTSLayerInfo.TileMatrixSets.Count.ToString
                    End If
                    
                    ' Display the Title of the WmtsLayer.WmtsLayerInfo sub-Layer.
                    If oneWMTSLayerInfo.Title IsNot Nothing Then
                      TextBox_Title2.Text = oneWMTSLayerInfo.Title
                    End If
                    
                  End If
                Next
              End If
              
            End Sub
              
            Private Sub WmtsLayer_InitializationFailed(ByVal sender As System.Object, ByVal e As System.EventArgs)
              
              ' This function displays any error information of the WmtsLayer fails to load.
              
              Dim aLayer As ESRI.ArcGIS.Client.Layer = sender
              MessageBox.Show(aLayer.InitializationFailure.Message)
              
            End Sub
            </code>
            </example>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.WmtsLayer.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:ESRI.ArcGIS.Client.Toolkit.DataSources.WmtsLayer"/> class.
            </summary>
        </member>
        <member name="F:ESRI.ArcGIS.Client.Toolkit.DataSources.WmtsLayer.UrlProperty">
            <summary>
            Identifies the <see cref="P:ESRI.ArcGIS.Client.Toolkit.DataSources.WmtsLayer.Url"/> dependency property.
            </summary>
        </member>
        <member name="F:ESRI.ArcGIS.Client.Toolkit.DataSources.WmtsLayer.TokenProperty">
            <summary>
            Identifies the <see cref="P:ESRI.ArcGIS.Client.Toolkit.DataSources.WmtsLayer.Token"/> dependency property.
            </summary>
        </member>
        <member name="F:ESRI.ArcGIS.Client.Toolkit.DataSources.WmtsLayer.ServiceModeProperty">
            <summary>
            Identifies the <see cref="P:ESRI.ArcGIS.Client.Toolkit.DataSources.WmtsLayer.ServiceMode"/> dependency property.
            </summary>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.WmtsLayer.Initialize">
            <summary>
            Initializes this WMTS layer.  Calls GetCapabilities if SkipGetCapabilities is false. 
            </summary>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.WmtsLayer.GetTileUrl(System.Int32,System.Int32,System.Int32)">
            <summary>
            Returns a URL to the specific tile in a WmtsLayer.
            </summary>
            <remarks>
            <para>
            A WmtsLayer is made up of multiple tiles (or images) that are automatically put together in 
            a mosaic for display in a Map Control. The tiles are pre-generated on a WMTS server and can 
            be accessed individually via a URL. In order to access the URL for a specific tile it is 
            required to know the Level, Row, and Column information. As of ArcGIS Server version 10.1, 
            serving WMTS layers as a native REST service is supported.
            </para>
            <para>
            It is possible to obtain the complete list of various Level, Row, and Column input parameter 
            values that can be used by the GetTileUrl Method by interrogating the XML information 
            returned from a GetCapabilities request in the address bar of a web browser but this is 
            tedious (see the <see cref="T:ESRI.ArcGIS.Client.Toolkit.DataSources.WmtsLayer">WmtsLayer</see> 
            documentation for a few examples of using the GetCapabilities request). A programmatic way 
            to determine the various Level, Row, and Column information can be obtained by writing some 
            code-behind logic in the 
            <see cref="E:ESRI.ArcGIS.Client.TiledLayer.TileLoading">WmtsLayer.TileLoading</see> Event 
            (see the code example in this document).
            </para>
            <para>
            If the <see cref="P:ESRI.ArcGIS.Client.Toolkit.DataSources.WmtsLayer.ProxyUrl">ProxyUrl</see> 
            Property has been set to create the WmtsLayer, then the output return string of the GetTileUrl 
            Method will have that ProxyUrl value inserted at the beginning.
            </para>
            <para>
            <b>Note:</b> Using Methods are only available in code-behind. You cannot use a Method via XAML.
            </para>
            </remarks>
            <example>
            <para>
            <b>How to use:</b>
            </para>
            <para>
            After the WmtsLayer loads in the Map Control, the ListBox will be populated with all the 
            combinations of 'Level, Row, and Column' tiles that make up the initial extent of the WmtsLayer 
            image service. Click on any of the combinations in the Listbox and that particular tile will be 
            displayed in an Image Control as well as the Url for that image.
            </para>
            <para>
            The XAML code in this example is used in conjunction with the code-behind (C# or VB.NET) to demonstrate
            the functionality.
            </para>
            <para>
            The following screen shot corresponds to the code example in this page.
            </para>
            <para>
            <img border="0" alt="Displaying individual tile images and their URL values for a WmtsLayer." src=" C:\ArcGIS\dotNET\API SDK\Main\ArcGISSilverlightSDK\LibraryReference\images\Client.Toolkit.DataSources.WmtsLayer.GetTileUrl.png"/>
            </para>
            <code title="Example XAML1" description="" lang="XAML">
            &lt;Grid x:Name="LayoutRoot" &gt;
              
              &lt;!-- Provide the instructions on how to use the sample code. --&gt;
              &lt;TextBlock Height="78" HorizontalAlignment="Left" Name="TextBlock1" VerticalAlignment="Top" Width="640" 
                   TextWrapping="Wrap" Text="After the WmtsLayer loads in the Map Control, the ListBox will be populated with
                   all the combinations of 'Level, Row, and Column' tiles that make up the initial extent of the WmtsLayer 
                   image service. Click on any of the combinations in the Listbox and that particular tile will be 
                   displayed in an Image Control as well as the Url for that image." /&gt;
              
              &lt;!-- The Map Control. --&gt;
              &lt;sdk:Label Height="28" HorizontalAlignment="Left" Margin="33,160,0,0" Name="Label_MapControl" 
                         VerticalAlignment="Top" Width="120" Content="Map Control:"/&gt;
              &lt;esri:Map Background="White" HorizontalAlignment="Left" Margin="32,180,0,0" Name="Map1" 
                        VerticalAlignment="Top" WrapAround="True" Height="320" Width="600"&gt;
                &lt;esri:Map.Layers&gt;
                  &lt;esri:LayerCollection&gt;
                              
                    &lt;!-- 
                    Add a WmtsLayer. The use of a ProxyUrl is needed in addition to the regular Url property because the 
                    WMTS service is not hosted on a site that provides a cross domain policy file (clientaccesspolicy.xml
                    or crossdomain.xml). The InitializationFailed Event is used to notify the user in case the WMTS 
                    service is down. The TileLoading Event provides details about individual tiles in the WMTS service
                    that is necessary to get the input parameters (Level, Row, Column) of the WmtsLayer.GetTileUrl Method. 
                    --&gt;
                    &lt;esri:WmtsLayer ID="WMTS1" ServiceMode="KVP" Layer="usa:states"
                                    Url="http://v2.suite.opengeo.org/geoserver/gwc/service/wmts"
                                    ProxyUrl="http://serverapps.esri.com/SilverlightDemos/ProxyPage/proxy.ashx"
                                    InitializationFailed="WmtsLayer_InitializationFailed"
                                    TileLoading="WmtsLayer_TileLoading"/&gt;
                  &lt;/esri:LayerCollection&gt;
                &lt;/esri:Map.Layers&gt;
              &lt;/esri:Map&gt;
              
              &lt;!-- ListBox results. --&gt;
              &lt;sdk:Label Height="28" HorizontalAlignment="Left" Margin="33,512,0,0" Name="Label_ListBox1" 
                         VerticalAlignment="Top" Width="194" Content="ListBox Control:"/&gt;
              &lt;ListBox Height="93" HorizontalAlignment="Left" Margin="33,526,0,0" Name="ListBox1" 
                       VerticalAlignment="Top" Width="194" SelectionChanged="ListBox1_SelectionChanged"/&gt;
              
              &lt;!-- TiledLayer.TileLoadEventsArgs. Level, Row, and Column. --&gt;
              &lt;sdk:Label Height="28" HorizontalAlignment="Left" Margin="239,510,0,0" Name="Label_TileLoadEventArgs" 
                         VerticalAlignment="Top" Width="120" Content="TileLoadEventArgs:"/&gt;
              &lt;sdk:Label Height="28" HorizontalAlignment="Left" Margin="239,542,0,0" Name="Label_Level" 
                         VerticalAlignment="Top" Width="48" Content="Level:"/&gt;
              &lt;TextBox Height="23" HorizontalAlignment="Left" Margin="293,536,0,0" Name="TextBox_Level" 
                       VerticalAlignment="Top" Width="52" /&gt;
              &lt;sdk:Label HorizontalAlignment="Left" Margin="239,564,0,208" Name="Label_Row" Width="48" Content="Row:"/&gt;
              &lt;TextBox Height="23" HorizontalAlignment="Left" Margin="293,566,0,0" Name="TextBox_Row" 
                       VerticalAlignment="Top" Width="51" /&gt;
              &lt;sdk:Label Height="28" HorizontalAlignment="Left" Margin="239,602,0,0" Name="Label_Column" 
                         VerticalAlignment="Top" Width="48" Content="Column:" /&gt;
              &lt;TextBox Height="23" HorizontalAlignment="Left" Margin="293,596,0,0" Name="TextBox_Column" 
                       VerticalAlignment="Top" Width="52" /&gt;
              
              &lt;!-- WmtsLayer.GetTileUrl results. --&gt;
              &lt;sdk:Label Height="28" HorizontalAlignment="Left" Margin="32,631,0,0" Name="Label_GetTileUrl" 
                         VerticalAlignment="Top" Width="344" Content="WmtsLayer.GetTileUrl:"/&gt;
              &lt;TextBox Height="124" HorizontalAlignment="Left" Margin="32,648,0,0" Name="TextBox_GetTileUrl" 
                       VerticalAlignment="Top" Width="344" TextWrapping="Wrap"/&gt;
              
              &lt;!-- Image Control results. --&gt;
              &lt;sdk:Label Height="28" HorizontalAlignment="Left" Margin="384,508,0,0" Name="Label_ImageControl1" 
                         VerticalAlignment="Top" Width="198" Content="Image Control:"/&gt;
              &lt;Image Height="250" HorizontalAlignment="Left" Margin="382,522,0,0" Name="Image1" 
                     Stretch="Fill" VerticalAlignment="Top" Width="250" /&gt;
              
            &lt;/Grid&gt;
            </code>
            <code title="Example CS1" description="" lang="CS">
            private void WmtsLayer_InitializationFailed(object sender, System.EventArgs e)
            {
              // Notify the user if there is a failure with the WMTS service.
              ESRI.ArcGIS.Client.Layer aLayer = (ESRI.ArcGIS.Client.Layer)sender;
              MessageBox.Show(aLayer.InitializationFailure.Message);
            }
            
            private void WmtsLayer_TileLoading(object sender, ESRI.ArcGIS.Client.TiledLayer.TileLoadEventArgs e)
            {
              // This Event will fire for each tile that is loaded in the Map Control. For instance, if it takes 4 tiled images
              // to render the Map Control completely, then this Event will fire 4 times. As you Zoom In or Pan around to other
              // geographic areas in the Map, this Event will continue to fire until all of the tiles have been processed. 
              
              // The e argument of the Event returns a TileLoadEventArgs object.
              ESRI.ArcGIS.Client.TiledLayer.TileLoadEventArgs myTileLoadEventArgs = e;
              
              // Get the Tile's Level, Row, and Column Properties
              int myLevel = myTileLoadEventArgs.Level;
              int myRow = myTileLoadEventArgs.Row;
              int myColumn = myTileLoadEventArgs.Column;
              
              // Generate a string that is comma delimited with the Level, Row, and Column values and add them to a Listbox.
              string myString = myLevel.ToString() + "," + myRow.ToString() + "," + myColumn.ToString();
              
              // Do not add any duplicates.
              if (! (ListBox1.Items.Contains(myString)))
              {
                ListBox1.Items.Add(myString);
              }
            }
            
            private void ListBox1_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
            {
              // Get the SelectedItem from the Listbox and parse out the Level, Row, and Column arguments necessary to 
              // obtain the Url for a specific tile.
              string theConcatenatedString = ListBox1.SelectedItem;
              string[] theParts = theConcatenatedString.Split(',');
              int theLevel = Convert.ToInt32(theParts[0]);
              int theRow = Convert.ToInt32(theParts[1]);
              int theColumn = Convert.ToInt32(theParts[2]);
              
              // Update the Level, Row, and Column information in the TextBoxes for ease of viewing.
              TextBox_Level.Text = theLevel.ToString();
              TextBox_Row.Text = theRow.ToString();
              TextBox_Column.Text = theColumn.ToString();
              
              // Get the WmtsLayer. 
              ESRI.ArcGIS.Client.Toolkit.DataSources.WmtsLayer theWMTSLayer = (ESRI.ArcGIS.Client.Toolkit.DataSources.WmtsLayer)Map1.Layers["WMTS1"];
              
              // Obtain a specific tile Url from the WmtsLayer using the three arguments for the GetTileUrl Method.
              string theGetTileUrl = theWMTSLayer.GetTileUrl(theLevel, theRow, theColumn);
              TextBox_GetTileUrl.Text = theGetTileUrl;
              
              // Only process valid restults. 
              if (theGetTileUrl != null)
              {
                // Set the specific tile's Url as the Image's Source. 
                Uri myUri = new Uri(theGetTileUrl);
                Image1.Source = new Imaging.BitmapImage(myUri);
              }
            }
            </code>
            <code title="Example VB1" description="" lang="VB.NET">
            Private Sub WmtsLayer_InitializationFailed(ByVal sender As System.Object, ByVal e As System.EventArgs)
              
              ' Notify the user if there is a failure with the WMTS service.
              Dim aLayer As ESRI.ArcGIS.Client.Layer = sender
              MessageBox.Show(aLayer.InitializationFailure.Message)
              
            End Sub
              
            Private Sub WmtsLayer_TileLoading(ByVal sender As System.Object, ByVal e As ESRI.ArcGIS.Client.TiledLayer.TileLoadEventArgs)
              
              ' This Event will fire for each tile that is loaded in the Map Control. For instance, if it takes 4 tiled images
              ' to render the Map Control completely, then this Event will fire 4 times. As you Zoom In or Pan around to other
              ' geographic areas in the Map, this Event will continue to fire until all of the tiles have been processed. 
              
              ' The e argument of the Event returns a TileLoadEventArgs object.
              Dim myTileLoadEventArgs As ESRI.ArcGIS.Client.TiledLayer.TileLoadEventArgs = e
              
              ' Get the Tile's Level, Row, and Column Properties
              Dim myLevel As Integer = myTileLoadEventArgs.Level
              Dim myRow As Integer = myTileLoadEventArgs.Row
              Dim myColumn As Integer = myTileLoadEventArgs.Column
              
              ' Generate a string that is comma delimited with the Level, Row, and Column values and add them to a Listbox.
              Dim myString As String = myLevel.ToString + "," + myRow.ToString + "," + myColumn.ToString
              
              ' Do not add any duplicates.
              If Not ListBox1.Items.Contains(myString) Then
                ListBox1.Items.Add(myString)
              End If
              
            End Sub
              
            Private Sub ListBox1_SelectionChanged(ByVal sender As System.Object, ByVal e As System.Windows.Controls.SelectionChangedEventArgs)
              
              ' Get the SelectedItem from the Listbox and parse out the Level, Row, and Column arguments necessary to 
              ' obtain the Url for a specific tile.
              Dim theConcatenatedString As String = ListBox1.SelectedItem
              Dim theParts As String() = Split(theConcatenatedString, ",")
              Dim theLevel As Integer = CInt(theParts(0))
              Dim theRow As Integer = CInt(theParts(1))
              Dim theColumn As Integer = CInt(theParts(2))
              
              ' Update the Level, Row, and Column information in the TextBoxes for ease of viewing.
              TextBox_Level.Text = theLevel.ToString
              TextBox_Row.Text = theRow.ToString
              TextBox_Column.Text = theColumn.ToString
              
              ' Get the WmtsLayer. 
              Dim theWMTSLayer As ESRI.ArcGIS.Client.Toolkit.DataSources.WmtsLayer = Map1.Layers("WMTS1")
              
              ' Obtain a specific tile Url from the WmtsLayer using the three arguments for the GetTileUrl Method.
              Dim theGetTileUrl As String = theWMTSLayer.GetTileUrl(theLevel, theRow, theColumn)
              TextBox_GetTileUrl.Text = theGetTileUrl
              
              ' Only process valid restults. 
              If theGetTileUrl IsNot Nothing Then
                
                ' Set the specific tile's Url as the Image's Source. 
                Dim myUri As New Uri(theGetTileUrl)
                Image1.Source = New Imaging.BitmapImage(myUri)
                  
              End If
              
            End Sub
            </code>
            </example>
            <param name="level">Layer level</param>
            <param name="row">Tile row</param>
            <param name="col">Tile column</param>
            <returns>URL to the tile image</returns>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.WmtsLayer.ReplaceParameter(System.String,System.String,System.String)">
            <summary>
            Replaces the parameter by its value. Make an insensitive replacement since I am not sure about the WMTS specifications.
            </summary>
            <param name="input">The input.</param>
            <param name="parameter">The parameter.</param>
            <param name="value">The value.</param>
            <returns></returns>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.WmtsLayer.Url">
            <summary>
            Required.  Gets or sets the URL to a WMTS service endpoint.  
            For example,
            http://v2.suite.opengeo.org/geoserver/gwc/service/wmts
            </summary>
            <value>The URL.</value>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.WmtsLayer.Token">
            <summary>Gets or sets the token for accessing a secure ArcGIS service.</summary>
            <value>The token.</value>
            <remarks>
            ArcGIS Server services may be secured using token authentication. Use 
            <a href="javascript:ApiToConcept('01660000001w000000', '01n700000004000000', '011v00000007000000')" target="_top">Services Directory</a> 
            to determine if a service requires a
            token to be used. A token is an encrypted string generated by a token service on the
            same ArcGIS Server site and the secured service. The token service can be accessed in a
            browser via the Get Token link in Services Explorer or by navigating to the main token
            service page (e.g. <a href="http://www.example.com/ArcGIS/tokens/gettoken.html">http://www.example.com/ArcGIS/tokens/gettoken.html</a>).
            See the discussion topic on 
            <a href="javascript:ApiToConcept('016600000022000000', '01n700000022000000', '011v0000000n000000')" target="_top">secure services</a> 
            for more info.
            </remarks>
            <example>
            	<code lang="XAML">
            		<![CDATA[
            <esri:WmtsLayer ID="WmtsLayer"
                Url="http://serverapps.esri.com/ArcGIS/rest/services/California/MapServer/WMTS" 
                Token="T2ILopZdSMylbhKIysHa-8YgBVNPjRHsK-Kw3VoQS2RUQ0UpUAj30vGfT92YlEue" />]]>
            	</code>
            </example>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.WmtsLayer.ProxyUrl">
            <summary>
            Optional. Gets or sets the URL to a proxy service that brokers Web requests between the client application 
            and a WMTS service. Use a proxy service when the WMTS service is not hosted on a site that provides
            a cross domain policy file (clientaccesspolicy.xml or crossdomain.xml). 
            You can also use a proxy to convert png images to a bit-depth that supports transparency in Silverlight.
            </summary>
            <value>The proxy URL string.</value>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.WmtsLayer.ServiceMode">
            <summary>
            Gets or sets the service mode i.e. "KVP" or "RESTful". By default, it's "RESTful".
            </summary>
            <remarks>
            If the mode doesn't match the service, it won't create the WMTS layer successfully. </remarks>
            <value>The service mode.</value>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.WmtsLayer.Version">
            <summary>
            Optional. Gets or sets the WMTS version.
            The default value is 1.0.0
            </summary>
            <remarks>At this time, the only possible value is 1.0.0 </remarks>
            <value>The version string.</value>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.WmtsLayer.Layer">
            <summary>
            Gets or sets the layer identifier displayed by the WMTS service.
            </summary>
            <remarks>
            If the layer is not set explicitely, the first layer respecting the TileMatrixSet will be used.</remarks>
            <value>The layer.</value>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.WmtsLayer.TileMatrixSet">
            <summary>
            Gets or sets the tile matrix set.
            It defines the tileMatrixSet the layer will use. 
            </summary>
            <remarks>
            If the tile matric set is not set explicitely, the first tile matrix set supported by the WMTS will be used.</remarks>
            <value>The tile matrix set.</value>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.WmtsLayer.Style">
            <summary>
            Gets or sets the style to apply to the WMTS layer.
            </summary>
            <value>The style.</value>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.WmtsLayer.ImageFormat">
            <summary>
            Gets or sets the image format used by the WMTS layer.
            </summary>
            <value>The image format.</value>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.WmtsLayer.SkipGetCapabilities">
            <summary>
            Optional. Gets or sets a value indicating whether to skip a request to get capabilities. 
            Default value is false.  Set SkipGetCapabilities if the site hosting the WMTS service does not provide a
            cross domain policy file and you do not have a proxy page.  In this case, you must set the WMTS service version.
            If true, the initial and full extent of the WMTS Silverlight layer will not be defined.
            </summary>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.WmtsLayer.Title">
            <summary>
            The title of the currently active layer.
            </summary>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.WmtsLayer.Description">
            <summary>
            Gets or sets the description of the currently active layer.
            </summary>
            <value>The description.</value>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.WmtsLayer.LayerInfos">
            <summary>
            An enumeration of WmtsLayerInfo describing the layers available for this WMTS service.
            </summary>
            <remarks>
            This enumeration is only available if SkipGetCapabilities is false and after the layer is initialized.
            </remarks>
            <value>The layer infos.</value>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.WmtsLayer.TileInfo">
            <summary>
            </summary>
        </member>
        <member name="T:ESRI.ArcGIS.Client.Toolkit.DataSources.WmtsLayer.WmtsServiceMode">
            <summary>
            Indicates which architecture style is using the server : procedure oriented (KVP) or resource oriented (RESTFul)
            </summary>
            <remarks>The procedure oriented architecture style with SOAP encodings is not supported.</remarks>
        </member>
        <member name="F:ESRI.ArcGIS.Client.Toolkit.DataSources.WmtsLayer.WmtsServiceMode.KVP">
            <summary>
            The WMTS server operates in a procedure oriented architecture style.
            HTTP GET Transfer of operation requests is using KVP (Key-Value-Pair) encodings.
            </summary>
        </member>
        <member name="F:ESRI.ArcGIS.Client.Toolkit.DataSources.WmtsLayer.WmtsServiceMode.RESTful">
            <summary>
            The WMTS server operates in a resource oriented architecture style (REST).
            </summary>
        </member>
        <member name="T:ESRI.ArcGIS.Client.Toolkit.DataSources.WmtsLayer.WmtsLayerInfo">
            <summary>
            Information about a WMTS layer.
            </summary>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.WmtsLayer.WmtsLayerInfo.Identifier">
            <summary>
            Gets the identifier of the layer.
            </summary>
            <value>The identifier.</value>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.WmtsLayer.WmtsLayerInfo.Title">
            <summary>
            Gets the title of the layer.
            </summary>
            <value>The title.</value>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.WmtsLayer.WmtsLayerInfo.Abstract">
            <summary>
            Gets the abstract for the layer.
            </summary>
            <value>The abstract.</value>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.WmtsLayer.WmtsLayerInfo.Formats">
            <summary>
            Gets the enumeration of image formats supported by the layer.
            </summary>
            <value>The formats.</value>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.WmtsLayer.WmtsLayerInfo.Styles">
            <summary>
            Gets the enumeration of styles supported by the layer.
            </summary>
            <value>The styles.</value>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.WmtsLayer.WmtsLayerInfo.TileMatrixSets">
            <summary>
            Gets the enumeration of tile matrix sets supported by the layer.
            </summary>
            <value>The tile matrix sets.</value>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.WmtsLayer.WmtsLayerInfo.Extent">
            <summary>
            Gets the extent of the layer.
            </summary>
            <value>The extent.</value>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.WmtsLayer.StyleInfo.Identifier">
            <summary>
            Gets the identifier of the style.
            </summary>
            <value>The identifier.</value>
        </member>
        <member name="T:ESRI.ArcGIS.Client.Toolkit.DataSources.XmlExtension">
            <summary>
            Helper XML extensions
            </summary>
        </member>
        <member name="M:ESRI.ArcGIS.Client.Toolkit.DataSources.XmlExtension.XPathSelectElement(System.Xml.Linq.XElement,System.String,System.Xml.Linq.XNamespace)">
            <summary>
            Very simplified version of querying an element by XPath.
            Note : System.Xml.Xpath extensions doesn't exist for WP7
            </summary>
            <param name="element">The element.</param>
            <param name="path">The path.</param>
            <param name="ns">The ns.</param>
            <returns></returns>
        </member>
        <member name="T:ESRI.ArcGIS.Client.Toolkit.DataSources.Properties.Resources">
            <summary>
              A strongly-typed resource class, for looking up localized strings, etc.
            </summary>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.Properties.Resources.ResourceManager">
            <summary>
              Returns the cached ResourceManager instance used by this class.
            </summary>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.Properties.Resources.Culture">
            <summary>
              Overrides the current thread's CurrentUICulture property for all
              resource lookups using this strongly typed resource class.
            </summary>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.Properties.Resources.CsvLayer_Parsing_FormatException">
            <summary>
              Looks up a localized string similar to CSV parsing failed..
            </summary>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.Properties.Resources.CsvLayer_ResourceNotFound">
            <summary>
              Looks up a localized string similar to Resource could not be located..
            </summary>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.Properties.Resources.FeatureDefinition_ImageTypeNotSupported">
            <summary>
              Looks up a localized string similar to Image type &apos;{0}&apos; is not supported in Silverlight..
            </summary>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.Properties.Resources.Generic_UrlNotSet">
            <summary>
              Looks up a localized string similar to Url is not set..
            </summary>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.Properties.Resources.GeoRss_ReadingFeedFailed">
            <summary>
              Looks up a localized string similar to Error in reading the RSS feed..
            </summary>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.Properties.Resources.GraphicsLayer_GraphicsSourceCannotBeSetOnLayer">
            <summary>
              Looks up a localized string similar to Layer does not support setting the GraphicsSource Property..
            </summary>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.Properties.Resources.HeatMapLayer_IntensityLessThanOne">
            <summary>
              Looks up a localized string similar to Intensity cannot be less than one..
            </summary>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.Properties.Resources.KmlLayer_DocumentParsingFailed">
            <summary>
              Looks up a localized string similar to KML layer parsing document failed..
            </summary>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.Properties.Resources.KmlLayer_GroundOverlaysSublayer">
            <summary>
              Looks up a localized string similar to GroundOverlays.
            </summary>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.Properties.Resources.KmlLayer_PlacemarksSublayer">
            <summary>
              Looks up a localized string similar to Placemarks.
            </summary>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.Properties.Resources.KmlLayer_XDocumentReadFailed">
            <summary>
              Looks up a localized string similar to Unable to read KML source..
            </summary>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.Properties.Resources.MapService_SecurityException">
            <summary>
              Looks up a localized string similar to A security exception occurred while trying to connect to the &apos;{0}&apos; service. Make sure you have a cross domain policy file available at the root for your server that allows for requests from this application. If not, use a proxy page (handler) to broker communication..
            </summary>
        </member>
        <member name="P:ESRI.ArcGIS.Client.Toolkit.DataSources.Properties.Resources.WebRequest_Canceled">
            <summary>
              Looks up a localized string similar to Request canceled..
            </summary>
        </member>
    </members>
</doc>
